Chathistory By Mutor, API2 | Переведен мною =) |
Здравствуйте, гость ( Вход | Регистрация )
Chathistory By Mutor, API2 | Переведен мною =) |
13.8.2008, 9:45
Сообщение
#1
|
|
Активный участник Группа: Пользователи Сообщений: 58 Регистрация: 10.7.2008 Пользователь №: 167 Спасибо сказали: 4 раза |
Ведет историю чата, есть менюха, команды, стирание истории, вывод истории по дням и тп. Проверено на PtokaX 0.4.1.1! Взял его с сайта Мутора и перевел)
Прикрепленные файлы
|
|
|
13.8.2008, 14:52
Сообщение
#2
|
|
Участник Группа: Пользователи Сообщений: 47 Регистрация: 29.7.2008 Из: керчь Пользователь №: 293 Спасибо сказали: 0 раз |
а можно зделать чтобы он не в пм отправлял а в обычный чат? и чтобы просто было написано
последние 10сообщений чата: и 10сообшений и всё заранее благодарен |
|
|
8.11.2008, 11:51
Сообщение
#3
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 1 Регистрация: 27.9.2008 Пользователь №: 596 Спасибо сказали: 0 раз |
я можно сделать что бы история чата не выводилась при подключении, а просто можно было использовать только из меню?????
|
|
|
8.2.2009, 22:05
Сообщение
#4
|
|
Начинающий Группа: Пользователи Сообщений: 10 Регистрация: 19.1.2009 Пользователь №: 1 879 Спасибо сказали: 0 раз |
[21:01] Синтаксис E:\Ptokax\scripts\ChatHist.lua:159: attempt to index a nil value
|
|
|
23.2.2009, 9:35
Сообщение
#5
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 5 Регистрация: 23.2.2009 Пользователь №: 2 330 Спасибо сказали: 0 раз |
2 вопроса, зачем встраивать антирекламу в него ?.... 2 штуки получается у меня 1я отдельный скрипт скан привата и чата, вторая уже чистое сканит в этом скрипте ))
дадада, если этот скрипт выше поставить в списке чем антирекламу то пройдет.. но все-таки )) :Pъ scripts\ChatHist.lua:143: attempt to index a nil value и скрипт выруьается )) я не знаком с апи 2 и давно не читал LUA поэтому надеюсь на вас )) |
|
|
18.10.2009, 13:18
Сообщение
#6
|
|
Активный участник Группа: Пользователи Сообщений: 52 Регистрация: 10.10.2009 Пользователь №: 4 687 Спасибо сказали: 3 раза |
Просьба знающим людям помочь.
Попытался слегка модифицировать скриптик под себя, моя модификация в аттаче. Не нравится в нем несколько вещей: 1. Выводит историю в след. виде: Цитата 19 10/18/09 01:52p <Тишка> постоянно 20 10/18/09 01:52p <Тишка> я хз как исправить то 21 10/18/09 01:52p <IRON> я исправлю 22 10/18/09 01:52p <Тишка> остальное все поправила, сейчас выложу на форуме тогда 23 10/18/09 01:52p <IRON> давай 24 10/18/09 01:54p <Тишка> выложила 25 10/18/09 01:55p <Тишка> а новый год...смысл в том, что он не срабатывает пока не напишешь следующее сообщение 26 10/18/09 01:55p <IRON> Тишка: сча, я с историей чата разберусь и займусь 27 10/18/09 01:55p <Тишка> угу, а я убегаю пока тогда. до вечера 28 10/18/09 01:56p <IRON> до вечера Необходимо убрать числа, что идут слева от даты. Насколько я понял, эти числа-номер сообщения в базе данных скрипта. За вывод отвечает следующий код: Код GetChat = function(lines) local x = lines if lines > #Cfg.Chat then x,lines = #Cfg.Chat,#Cfg.Chat end x = #Cfg.Chat - x local str = "\r\n\r\n <"..string.rep("-",70).."[ Последние ( "..(lines).." ) сообщений чата ]------------>\r\n" for i,v in ipairs(Cfg.Chat) do if i > x then str = str.."\r\n "..string.format("%"..string.len(#Cfg.Chat).. "s",i).." "..v[2].." "..v[3].." "..v[4] end end return str.."\r\n\r\n <"..string.rep("-",70).."[ Конец истории чата ]".. string.rep("-",4 + string.len(lines)).."-------->\r\n\r\n" end Конкретно, формирование строк, насколько я понял, идет вот тут: Код str = str.."\r\n "..string.format("%"..string.len(#Cfg.Chat).. "s",i).." "..v[2].." "..v[3].." "..v[4] Если просто выкинуть "s",i то скрипт перестает работать. Как быть? 2. Выводит время в след. виде: Цитата 10/18/09 01:52p Мне то оно ясно, что p просто означает после полудня, но очень хотелось бы заменить формат времени на 24-х часовой. Насколько я понял, за это отвечает след. блок кода: Код local t = { tonumber(os.date("%Y") + os.date("%j")), os.date("%m/%d/%y"), os.date("%I:%M")..string.sub(string.lower(os.date("%p")),1,1), data, } 3. Начало сообщения выглядит вот так: Цитата [14:07:25] Личка от [Летописец]: <[Летописец]> <----------------------------------------------------------------------[ Последние ( 10 ) сообщений чата ]------------> Нужно убрать лишнее имя бота и сделать вот так: Цитата [14:07:25] Личка от [Летописец]: <----------------------------------------------------------------------[ Последние ( 10 ) сообщений чата ]------------> Вот уж здесь запутался окончательно. Понимаю только что это где-то должно быть в функции ChatArrival, но где... Код ChatArrival = function(user, data) data = data:sub(1,-2) local _,_,to = data:find("^$To: (%S+) From:") local _,_,prefix = data:find("%b<> (["..SetMan.GetString(29).."])") if not prefix and not to then local op = ProfMan.GetProfile(user.iProfile).tProfilePermissions.bIsOP if not op and ChkAd(data) and Cfg.AaBlock > 0 then if Cfg.AaReply ~= "" then Core.SendToUser(user,"<"..Cfg.Bot..">"..Cfg.AaReply:gsub("%(user%)",user.sNick).."|") end if Cfg.AaBlock == 2 then return true else return false end end local t = { tonumber(os.date("%Y") + os.date("%j")), os.date("%m/%d/%y"), os.date("%I:%M")..string.sub(string.lower(os.date("%p")),1,1), data, } table.insert(Cfg.Chat,t) for x = 1, #Cfg.Chat - Cfg.MaxChat do table.remove(Cfg.Chat,1) end SaveToFile(Cfg.File,Cfg.Chat,"Cfg.Chat") else local _,_,cmd = data:find("%b<> %p(%w+)") if cmd and Cmds[cmd] then if Cfg.Profiles[user.iProfile] and Cfg.Profiles[user.iProfile][1] == 1 then if to and to == Cfg.Bot then return Core.SendPmToUser(user,Cfg.Bot,Cmds[cmd](user,data).."|"),true else return Core.SendToUser(user,"<"..Cfg.Bot.."> "..Cmds[cmd](user,data).."|"),true end else if to and to == Cfg.Bot then Core.SendPmToUser(user,Cfg.Bot,user.sNick.. " у вас нет прав использования этой команды.|") else Core.SendToUser(user,"<"..Cfg.Bot.."> "..user.sNick.. " у вас нет прав использования этой команды.|") end return true end end end end 4. Замечена ошибка-Если выдавать зареганым пользователям права то они имеют право удалять и всячески управлять историей. Если отобрать-история не высылается при заходе на хаб. В принципе, думаю что смогу пофиксить эту сам. Но первые 3 без помощи не обойтись. Как видите, насколько смог сам раскопал, но все к сожалению сам не смог сделать. P.S: т.к нужно позарез и как можно быстрее, готов выделить семизначную асю для того, кто сделает или хотя бы поможет. Вроде как номерки еще остались, около 90 штук.
Прикрепленные файлы
|
|
|
18.10.2009, 16:09
Сообщение
#7
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Когда-то поковырял для себя оригинальную муторовскую версию, сейчас возвращаться к этому нет желания, но первые 2 пункта в ней есть, а третий нереализуем.
[21:01] Синтаксис E:\Ptokax\scripts\ChatHist.lua:159: attempt to index a nil value Эта ошибка тоже исправлена. ChatHistory107.lua ( 15.56 килобайт ) Кол-во скачиваний: 126 |
|
|
18.10.2009, 18:25
Сообщение
#8
|
|
Активный участник Группа: Пользователи Сообщений: 52 Регистрация: 10.10.2009 Пользователь №: 4 687 Спасибо сказали: 3 раза |
Попытался запустить.
Цитата 18.10.2009 19:15:54 - /etc/ptokax/scripts/ChatHistory107.lua:231: bad argument #1 to 'ipairs' (table expected, got nil) 18.10.2009 19:17:24 - /etc/ptokax/scripts/ChatHistory107.lua:231: bad argument #1 to 'ipairs' (table expected, got nil) 18.10.2009 19:18:26 - /etc/ptokax/scripts/ChatHistory107.lua:231: bad argument #1 to 'ipairs' (table expected, got nil) Сам скрипт вроде как включается. Истории нет, меню нет. |
|
|
18.10.2009, 18:32
Сообщение
#9
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Автору темы: Нужно правильно оформить тему!
|
|
|
18.10.2009, 21:26
Сообщение
#10
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Папка ChatHist, в которой скрипт пытается сохранять свои файлы, создана?
|
|
|
19.10.2009, 16:08
Сообщение
#11
|
|
Активный участник Группа: Пользователи Сообщений: 52 Регистрация: 10.10.2009 Пользователь №: 4 687 Спасибо сказали: 3 раза |
Извиняюсь, совсем забыл.
Скрипт работает!!! Все что надо пашет!!!
Причина редактирования: Излишняя реклама | X-Sky
|
|
|
23.12.2009, 0:25
Сообщение
#12
|
|
Участник Группа: Пользователи Сообщений: 32 Регистрация: 14.7.2009 Из: Россия Пользователь №: 3 871 Спасибо сказали: 1 раз |
Моя версия отличается отсутствием показа счетчика количества последних сообщений (лишнее нагромождение). В чат выводится просто имя бота "последние 10 сообщений в чате" и ниже сообщения. Имеется возможность выбора кому показывать. Кстати тут уже интересовались именно простой версией
а можно зделать чтобы он не в пм отправлял а в обычный чат? и чтобы просто было написано последние 10сообщений чата: и 10сообшений и всё заранее благодарен Скрипт работал на PtokaX 0.3.6.0. После конвертации стал таким (см.ниже). Проблема: выводит только одно последнее сообщение. Замена 1 в конце скрипта на true ничего не дает (был опыт, не поставил true вместо 1 и ничего не работало). Подскажите пожалуйста где чего поменять? Нажмите СЮДА для открытия просмотра кода скрипта -- Этот скрипт конвертирован программой PtokaX LUA API Конвертор v0.9. Русская версия 12/23/09 07:22:08 --[[ Скрипт: Chat History On Entry Версия: 1.03b Поддержка: 5.1 Перевод и оптимизация: NRJ ОПИСАНИЕ: Скрипт выводит последние x сообщений чата ]]-- ------------------------------------ Конфигурация ------------------------------------ -------------------------------------------------------------------------------------- botname = "Последние 10 сообщений в чате" -- Имя бота BadChars = {".","?","!","+","-",} --На какие префиксы скрипт не будет реагировать maxhistory = 20 -- Максимум линий для чата в кеше chatfile = "chathistory.dat"-- куда будут записываться логи чата GetChat = "+история" -- Команда для показа последних сообщений; Например, +история 10 покажет последние 10 сообщений -- Выбираем, для каких профилей будет доступна команда: -- индекс профиля, история чата [0=нет 1=да], "Название профиля" HistoryProfiles = { [-1] = {0,"Незарегистрированные пользователи"}, [0] = {1,"Мастер"}, [1] = {1,"Оп"}, [2] = {1,"Вип"}, [3] = {1,"Зарегистрированные пользователи"}, } -------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------- function OnStartup() if loadfile(chatfile) == nil then chathistory = {} local when = os.date(" %B %d %Y в: %X") local chat = "Файл лога главного чата создан: " table.insert(chathistory,when..chat) local f,e = io.open( chatfile, "w+" ) f:write( "return {\n"..string.format("%q",chat..when)..",\n}" ) f:close() end chathistory = dofile(chatfile) --frmHub:RegBot(botname) end function OnExit() savehistory() end function UserConnected(user) Core.GetUserAllData(user) if HistoryProfiles[user.iProfile] and HistoryProfiles[user.iProfile][1] == 1 then local n = #chathistory for i = 1, n do str = "\r\n"..chathistory[i] end Core.SendToNick(user.sNick,"<"..botname.."> "..str.."\r\n") end end OpConnected = UserConnected function ChatArrival(user,data) Core.GetUserAllData(user) if string.sub(data, 1, 1) ~= "<" then end local s,e,pre = string.find(data, "^%b<> (.)") local s,e,cmd,lines = string.find(data, "^%b<>%s+(%S+)%s+(%d+)|$") local when = os.date("[%H:%M] ") local chat = string.sub(data, 1, -2) if cmd and cmd == GetChat then if lines ~= e then GetChatLines(user, lines) return true else Core.SendToNick(user.sNick,"<".."Пожалуйста.."> ".. укажите, сколько сообщений из лога главного чата вы хотите увидеть. Максимальное значение: "..maxhistory..".") return true end else for k,v in ipairs(BadChars) do if pre == v then return end end table.insert(chathistory,when..chat) if #chathistory > maxhistory then table.remove(chathistory, 1) end savehistory() end end function GetChatLines(user, linecount) local n1 = #chathistory local n2 = linecount local n3 = n1 - (n2-1) for i =n3,n1 do str = "\r\n"..chathistory[i] end Core.SendPmToNick(user.sNick,botname,str.."\r\n") end function savehistory() local f,e = io.open( chatfile, "w+" ) if f then f:write("return {\n") for i = 1, #chathistory do f:write( "\t"..string.format("%q", chathistory[i])..",\r\n" ) end f:write("}" ) f:close() return 1 else return nil end end RegConnected = UserConnected |
|
|
23.12.2009, 1:15
Сообщение
#13
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
ВАСЯ
прикрепляй скрипт, а не пости код. |
|
|
23.12.2009, 1:22
Сообщение
#14
|
|
Участник Группа: Пользователи Сообщений: 32 Регистрация: 14.7.2009 Из: Россия Пользователь №: 3 871 Спасибо сказали: 1 раз |
Артём, как прикажете , только от вашего бурного участия в моих немногочисленных сообщениях на форуме толку пока что 0% ))). Замечания можно в личку кидать, дабы не флудить.
chat_history.lua ( 3.27 килобайт ) Кол-во скачиваний: 67 |
|
|
23.12.2009, 1:32
Сообщение
#15
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
, а не проще было в той же теме выложить?)))
|
|
|
23.12.2009, 12:25
Сообщение
#16
|
|
Участник Группа: Пользователи Сообщений: 32 Регистрация: 14.7.2009 Из: Россия Пользователь №: 3 871 Спасибо сказали: 1 раз |
Побродив по инету нашел тему откуда скачивал скрипт. Оказывается там изначально косяк:
открыть function NewUserConnected(user) if HistoryProfiles[user.iProfile] and HistoryProfiles[user.iProfile][1] == 1 then local n = table.maxn(chathistory) for i = 1, n do str = "\r\n"..chathistory[i] end user:SendData(botname,str.."\r\n") end end Видимо знающий человек написал про это: "for i = 1, n do str11 = "\r\n"..chathistory[11] end У тебя n раз делается ОДНО И ТО ЖЕ. пеерменная str11 принимает значение "\r\n"..chathistory[11] Дальше думаю понятно =)" Если бы нам было понятно, наверно мы (тупоголовые) не бродили бы по форумам с вопросами . В переведенном скрипте эти строчки выглядят так: открыть function UserConnected(user) Core.GetUserAllData(user) if HistoryProfiles[user.iProfile] and HistoryProfiles[user.iProfile][1] == 1 then local n = #chathistory for i = 1, n do str = "\r\n"..chathistory[i] end Core.SendToNick(user.sNick,"<"..botname.."> "..str.."\r\n") end end Подскажите, где собака порылась? |
|
|
23.12.2009, 14:17
Сообщение
#17
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
for i = 1, n do str = str.."\r\n"..chathistory[i] end
|
|
|
23.12.2009, 15:45
Сообщение
#18
|
|
Участник Группа: Пользователи Сообщений: 32 Регистрация: 14.7.2009 Из: Россия Пользователь №: 3 871 Спасибо сказали: 1 раз |
Не проходит, так вообще не выводит
|
|
|
23.12.2009, 15:47
Сообщение
#19
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ну так инициализируй строку, чтобы проходило:
Код local str = ""
for i = 1, n do str = str.."\r\n"..chathistory[i] end |
|
|
23.12.2009, 16:58
Сообщение
#20
|
|
Участник Группа: Пользователи Сообщений: 32 Регистрация: 14.7.2009 Из: Россия Пользователь №: 3 871 Спасибо сказали: 1 раз |
Мозги уже опухли... ничего у меня не получается. Скачал все заново, сконвертировал, теперь без правки не работает и с правкой не работает. Думаю проще прилепить оригинал под PtokaX 0.3.6.0. Если кто займется правильным конвертированием и приведению в дееспособность, буду очень благодарен. Сложно что-то делать ничего не понимая в этом
chat_history_orig.lua ( 3.08 килобайт ) Кол-во скачиваний: 41 |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Антипорн By Mutor, Бан По Ттн API1, API2 | База порнухи около 500 ТТН |
49 | district | 62 357 | 17.11.2012, 19:19 Посл. сообщение: Alexey | |
UserInfo_v0.2___by_Nickolya + Hider (Mutor) | 7 | X-Sky | 11 691 | 25.11.2010, 20:34 Посл. сообщение: X-Sky | |
От: Антипорн By Mutor, Бан По Ттн От темы с ID: 573 |
0 | Spongebob | 4 747 | 19.12.2008, 21:30 Посл. сообщение: Spongebob | |
Reboot Msg By Mutor API2 |
1 | MEXAHuK | 6 753 | 4.12.2008, 22:32 Посл. сообщение: Wariner |
|
Сейчас: 23.11.2024, 1:08 |