ChatStat v3
 

News:

29 December 2022 - PtokaX 0.5.3.0 (20th anniversary edition) released...
11 April 2017 - PtokaX 0.5.2.2 released...
8 April 2015 Anti child and anti pedo pr0n scripts are not allowed anymore on this board!
28 September 2015 - PtokaX 0.5.2.1 for Windows 10 IoT released...
3 September 2015 - PtokaX 0.5.2.1 released...
16 August 2015 - PtokaX 0.5.2.0 released...
1 August 2015 - Crowdfunding for ADC protocol support in PtokaX ended. Clearly nobody want ADC support...
30 June 2015 - PtokaX 0.5.1.0 released...
30 April 2015 Crowdfunding for ADC protocol support in PtokaX
26 April 2015 New support hub!
20 February 2015 - PtokaX 0.5.0.3 released...
13 April 2014 - PtokaX 0.5.0.2 released...
23 March 2014 - PtokaX testing version 0.5.0.1 build 454 is available.
04 March 2014 - PtokaX.org sites were temporary down because of DDOS attacks and issues with hosting service provider.

Main Menu

ChatStat v3

Started by suattnav, 17 May, 2005, 17:55:30

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

suattnav

Chatstat erros


 No chat statics found!  

jiten

QuoteOriginally posted by suattnav
Chatstat erros


 No chat statics found!  
That's a common error for users that haven't spoken in main. Try chatting and using that command again. You'll see that the error report will be gone.

Btw, next time, please post in its respective thread ;)

Cheers

suattnav

Chatstat erros


 No chat statics found!  
[/QUOTE]
That's a common error for users that haven't spoken in main. Try chatting and using that command again. You'll see that the error report will be gone.

I spoken in main.Much.
The error report not gone.

 No chat statics found!

jiten

Which version of the script are you using? madman or Herodes one?

suattnav

QuoteOriginally posted by jiten
Which version of the script are you using? madman or Herodes one?

I use this.



-- ChatStats v3 Made By Optimus

-- Based on Tezlo chats

-- Added Send Commands By TiMeTrAVelleR

-- Madman fixed some in commands

-- Converted to lua5 by Madman with very little help by Jelf

-- with some help by ?

-- fixed stats saving on exit by jiten

---- Modded by Madman

-- Added so it's creates ChatStatsFile, if it's missing

-- Fixed so it dont counts commands

-- Added a IgnoreTable, users in that wont be counted

----



sBot = "Chatstats"      -- Name of Bot

SendComm = 1          -- Send UserCommands 1 = On  0 = Off

pMenu = "-=( ChatStats )=-"    -- Name of Menu

ChatStatsTo = "user" -- Send TopChatters to? user or all



Chatstats = {}



Sortstats = 2   -- 1=words / 2=posts



ChatStatsFile = "chatstats.tbl"



IgnoreTable = {

-- 0=dont ignore/1=ignore

   ["Madman"] = 0,

   ["-=FakeKiller=-"] = 1,

}



EnableChatStats = {

   [0] = 1, -- Master

   [1] = 1, -- Operators

   [2] = 1, -- Vips

   [3] = 1, -- Regs

   [4] = 1, -- Moderators

   [5] = 1, -- NetFounders

   [-1] = 1, -- Users (UnRegged)

}



AllowedProfiles = {

   [0] = 1,   -- Masters

   [1] = 0,   -- Operators

   [4] = 0,   -- Moderator

   [5] = 0,   -- NetFounder

}



function Main()

   frmHub:RegBot(sBot)

   local file = io.open(ChatStatsFile, "r")

   if file then

      file:close()

   else

      local file = io.open(ChatStatsFile, "w+")

      file:write()

      file:close()

   end

   dofile(ChatStatsFile)

end



function NewUserConnected(user)

   if SendComm == 1 and EnableChatStats[user.iProfile] == 1 then

      if Chatstats[user.sName] then

         user:SendData(sBot, "---===[ Your Chat Stats:  You Made "..Chatstats[user.sName]["post"].." Posts In Main Used "..Chatstats[user.sName]["chars"].."  Characters, And "..Chatstats[user.sName]["words"].." Words ]===---")

      end

      user:SendData("$UserCommand 1 3 "..pMenu.."\\TopChatters$<%[mynick]> !topchatters||")

      user:SendData("$UserCommand 1 3 "..pMenu.."\\My Chat Stat$<%[mynick]> !mychatstat||")

      if AllowedProfiles[user.iProfile] == 1 then

         user:SendData("$UserCommand 1 3 "..pMenu.."\\Del Chatter$<%[mynick]> !delchatter %[line:Nick]||")

         user:SendData("$UserCommand 1 3 "..pMenu.."\\Clear Chat Stats$<%[mynick]> !clearchatstats||")

      end

   end

end



OpConnected = NewUserConnected



function OnExit()

   if isEmpty(Chatstats) then

   else

      saveTableToFile(ChatStatsFile, Chatstats, "Chatstats")

   end

end



function IsCmd(str)

   return string.sub(str, 1, 1) == "!" or string.sub(str, 1, 1) == "?" or string.sub(str, 1, 1) == "+" or string.sub(str, 1, 1) == "#"

end



function ChatArrival(user, data)

   if EnableChatStats[user.iProfile] == 1 then

      local s,e,cmd = string.find(data,"%b<>%s+(%S+)")

      if IsCmd(cmd) then

      elseif IgnoreTable[user.sName] == 1 then

      else

         local s,e,str = string.find(data, "^%b<> (.*)%|$")

         updStats(user.sName, str)

      end

   end

   data=string.sub(data,1,string.len(data)-1)

   s,e,cmd=string.find(data, "%b<>%s+(%S+)")

   if (cmd == "!mychatstat") then

      if Chatstats[user.sName] then

         user:SendData(sBot, "---===[ Your Chat Stats:  You Made "..Chatstats[user.sName]["post"].." Posts In Main Used "..Chatstats[user.sName]["chars"].."  Characters, And "..Chatstats[user.sName]["words"].." Words ]===---")

         return 1

      else

         user:SendData(sBot, "*** No chat statics found!")

         return 1

      end

   elseif (cmd=="!topchatters") then

      TCopy={}

      if Chatstats then

         for i,v in Chatstats do

            table.insert(TCopy,{i,v.post,v.chars,v.words})

         end

         table.sort(TCopy,function(a,b) return (a[Sortstats] > b[Sortstats]) end)

         local chat = "Current Top Chatters:\r\n\r\n"

         chat = chat.."\t ------------------------------------------------------------------------\r\n"

         chat = chat.."\t Nr.\tPosts:\tChars:\tWords:\tName:\r\n"

         chat = chat.."\t ------------------------------------------------------------------------\r\n"

         for i = 1,25 do

            if TCopy then

--                              Nr:         Posts:            Chars:            Words:            Name:

               chat = chat.."\t "..i..".\t "..TCopy[2].."\t "..TCopy[3].."\t "..TCopy[4].."\t"..TCopy[1].."\r\n"

            end

         end

         if ChatStatsTo == "user" then

            user:SendData(sBot, chat)

         elseif ChatStatsTo == "all" then

            SendToAll(sBot, chat)

         end

         TCopy={}

      end

      return 1

   elseif (cmd == "!delchatter") and AllowedProfiles[user.iProfile] == 1 then

      local s,e,cmd,name = string.find( data, "%b<>%s+(%S+)%s+(%S+)" )

      if name then

         if Chatstats[name] then

            Chatstats[name] = nil

            user:SendData(sBot, "Chatstats from user "..name.." are now removed!")

            saveTableToFile(ChatStatsFile, Chatstats, "Chatstats")

         else

            user:SendData(sBot, "*** Chatstats from user "..name.." not found!")

         end

      else

         user:SendData(sBot, "*** Usage: !delchatter ")

      end

      return 1

   elseif (cmd == "!clearchatstats") and AllowedProfiles[user.iProfile] == 1 then

      Chatstats = {}

      saveTableToFile(ChatStatsFile, Chatstats, "Chatstats")

      user:SendData(sBot, "Chatstats are cleared by "..user.sName)

      return 1

   end

end



function updStats(nick, str)

   local tmp = Chatstats[nick] or {["post"]=0, ["chars"]=0, ["words"]=0, ["time"]=os.date("%x")}

   tmp["post"], tmp["chars"], tmp["words"], tmp["time"] = tmp["post"]+1, tmp["chars"]+string.len(str), tmp["words"]+cntargs(str,"(%a+)"), os.date("%x")

   Chatstats[nick] = tmp

   saveTableToFile(ChatStatsFile, Chatstats, "Chatstats")

end



function cntargs(str, rule)

   local s,n = string.gsub(str, rule, "")

   return n

end



----------------------------------------------

-- load & save Tables

----------------------------------------------

function Serialize(tTable, sTableName, sTab)

   assert(tTable, "tTable equals nil");

   assert(sTableName, "sTableName equals nil");



   assert(type(tTable) == "table", "tTable must be a table!");

   assert(type(sTableName) == "string", "sTableName must be a string!");



   sTab = sTab or "";

   sTmp = ""



   sTmp = sTmp..sTab..sTableName.." = {\n"



   for key, value in tTable do

      local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key);



      if(type(value) == "table") then

         sTmp = sTmp..Serialize(value, sKey, sTab.."\t");

      else

         local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);

         sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue

      end



      sTmp = sTmp..",\n"

   end



   sTmp = sTmp..sTab.."}"

   return sTmp

end



-----------------------------------------------------------

function saveTableToFile(file, table, tablename)

   local handle = io.open(file,"w+")

   handle:write(Serialize(table, tablename))

   handle:flush()

   handle:close()

end

-----------------------------------------------------------

function loadTableFromFile(file)

   local handle = io.open(file,"r")

   if (handle ~= nil) then

      loadstring(handle:read("*all"))

      handle:flush()

      handle:close()

   end

end



-------------table checker by herodes

--- for an associative table, like ["smth"] = "smth else",

function isEmpty(t)

   for i,v in t do

      return false;

   end

   return true;

end;

jiten

That message is only sent when you use the "!mychatstat" command and when you haven't typed anything at all in main.
It's really strange as it would work after typing something.
Maybe you're doing something wrong there.

uffetjur

gets same problem with this version, might be interfering with other scripts
Somewhere in Cyberspace

Dessamator

QuoteOriginally posted by uffetjur
gets same problem with this version, might be interfering with other scripts

yap, might be try disabling the other scripts, or puting this one on top !
Ignorance is Bliss.

suattnav

I put Script on to top.
 
Yes,its working.

Thanks to all.

It's very little think sometimes.

Dessamator

yaps scripts are like that sometimes, ur welcome!
Ignorance is Bliss.

jiten

QuoteOriginally posted by suattnav
I put Script on to top.
 
Yes,its working.

Thanks to all.

It's very little think sometimes.
I'm glad to know that the problem is solved.

Cheers m8

SMF spam blocked by CleanTalk