Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Kорзина _ Вывод Чата В Файл

Автор: MEXAHuK 6.12.2008, 22:04

есть ли скрипт который выводит в файл N количество сообщений чата в N минут? файл типа .txt или .html

Автор: Wariner 6.12.2008, 22:05

что значит N сообщений в N минут?! с какой целью?

Автор: Sephiroth_Lukaw 6.12.2008, 22:51

Код
function OnStartup()
Log = ''
local nTimerInterval=6 * 6 * 10000 -- 6 минут
TmrMan.AddTimer(nTimerInterval, "SaveChat")
end
function SaveChat()
local hFile = io.open("scripts/chat.txt","w")
hFile:write(Log)
hFile:flush()
Log = ''
hFile:close()
end
function ChatArrival(tUser, sData)
Log = Log..sData
end
Я о том?

Код
function OnStartup()
tLog = {}
local nTimerInterval=6 * 6 * 10000 -- 6 минут
TmrMan.AddTimer(nTimerInterval, "SaveChat")
end
function SaveChat()
local hFile = io.open("scripts/chat.txt","w")
hFile:write("<HR>"..table.concat (tLog, "<BR>").."<HR>")
hFile:flush()
tLog = {}
hFile:close()
end
function ChatArrival(tUser, sData)
table.insert (tLog, sData)
end

Будь осторожен, с командами, типа, !regme, что бы и они логировались, ставь скрипт в самый верх ((-
Если нужно время сообщения, то, os.date("20%y-%m-%d %H:%M:%S "), надеюсь, сам найдёшь, куда вставить.

Автор: Serx 7.12.2008, 1:44

А как выглядит скрипт который только пишет лог чата и ничего более?

Автор: MEXAHuK 7.12.2008, 10:55

Sephiroth_Lukaw, оно! спасибо!
но вот только какой из них под апи2? нужно только вывод чата. никакой обработки команд.
Wariner, N сообщений в N минут - сорри, писал с жутких колёс и ловил глюки

не нужен лог, нужно только чтобы файл содержал только последние N сообщений.

Автор: Sephiroth_Lukaw 7.12.2008, 11:07

Т.е. без таймера? Оба под API2, если БЕЗ ТАЙМЕРа, а только n cообщений, то ПРИМЕРНО, так.

Код
function OnStartup()
tLog = {}
iMess = 0 --/* Не трогать */
nMess = 6 --/* Сообщений */
end
function SaveChat()
local hFile = io.open("scripts/chat.txt","w")
hFile:write("<HR>"..table.concat (tLog, "<BR>").."<HR>")
hFile:flush()
tLog = {}
iMess = 0
hFile:close()
end
function ChatArrival(tUser, sData)
local _,_,sMsg  = string.find(sData, "%b<>%s+(.*)|")
  if string.sub (sMsg, 0, 1) ~= "!" and string.sub (sMsg, 0, 1) ~= "+" then
    if iMess < nMess then
    iMess = iMess + 1
    table.insert (tLog, "<"..tUser.sNick.."> "..sMsg)
    else
    SaveChat()
    end
  end
end

Автор: MEXAHuK 7.12.2008, 11:20

СПАСИБА!
а чтобы сохранять их в любом месте компа а не только в папках птоки?

Sephiroth_Lukaw...
запустился
сам создал chat.txt
перезагрузил скрипт
пусто в файле

Автор: Sephiroth_Lukaw 7.12.2008, 11:21

Код
local _,_,sMsg  = string.find(sData, "%b<>%s+(*)|")
я тут точку забыл. Переписал.

Автор: MEXAHuK 7.12.2008, 11:24

не робитт
может local hFile = io.open("scripts//chat.txt","w")
? два слеша ?

Автор: Sephiroth_Lukaw 7.12.2008, 11:44

Тама логика просто ни много не правильная была, он ждал первые 6 сообщений. Прикрепленный пробуй. Протестирован.

Цитата("0.4.1.1")
[13:44] <Sephiroth_Lukaw> 2
[13:44] <Sephiroth_Lukaw> 3
[13:44] <Sephiroth_Lukaw> 4
[13:45] <Sephiroth_Lukaw> 5
[13:45] <Sephiroth_Lukaw> 6
[13:45] <Sephiroth_Lukaw> 7
[13:45] <Sephiroth_Lukaw> 8
[13:49] <Sephiroth_Lukaw> 9
[13:49] <Sephiroth_Lukaw> !10
[13:49] <Sephiroth_Lukaw> 11

Цитата("chat.txt")
<HR><Sephiroth_Lukaw> 5<BR><Sephiroth_Lukaw> 6<BR><Sephiroth_Lukaw> 7<BR><Sephiroth_Lukaw> 8<BR><Sephiroth_Lukaw> 9<BR><Sephiroth_Lukaw> 11<HR>


 LastNMessage.lua ( 738 байт ) : 12
 LastNMessageToPost.lua ( 888 байт ) : 64
 

Автор: MEXAHuK 7.12.2008, 11:48

Цитата(Sephiroth_Lukaw @ 7.12.2008, 13:44) *
Тама логика просто немного не правильная была, он ждал первые 6 сообщений. Прикрепленный пробуй. Протестирован.


работает.
<HR> - это тэги?
как время сообщения засунуть?

Автор: Sephiroth_Lukaw 7.12.2008, 11:51

Конечно теги)).
P.S.

Код
table.insert (tLog, os.date("[20%y-%m-%d %H:%M:%S] ").."<"..tUser.sNick.."> "..sMsg)

offtop: Я есть ушёл.

Автор: MEXAHuK 7.12.2008, 11:54

спасибо! очень помог!

Автор: Setuper 7.12.2008, 13:24

20%y - это пишется так %Y