myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему

> Chathistory By Mutor, API2 | Переведен мною =)

DemoN
сообщение 13.8.2008, 9:45
Сообщение #1


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 10.7.2008
Пользователь №: 167
Спасибо сказали: 4 раза




Ведет историю чата, есть менюха, команды, стирание истории, вывод истории по дням и тп. Проверено на PtokaX 0.4.1.1! Взял его с сайта Мутора и перевел) bad_smile.gif
Прикрепленные файлы
Прикрепленный файл  ChatHist.lua ( 14.66 килобайт ) Кол-во скачиваний: 788
 


Спасибо сказали:
Go to the top of the page
+Quote Post
Андреw
сообщение 13.8.2008, 14:52
Сообщение #2


Участник
**

Группа: Пользователи
Сообщений: 47
Регистрация: 29.7.2008
Из: керчь
Пользователь №: 293
Спасибо сказали: 0 раз




а можно зделать чтобы он не в пм отправлял а в обычный чат? и чтобы просто было написано
последние 10сообщений чата:
и 10сообшений и всё
заранее благодарен
Go to the top of the page
+Quote Post
danil_dem
сообщение 8.11.2008, 11:51
Сообщение #3


Абсолютный новичок


Группа: Пользователи
Сообщений: 1
Регистрация: 27.9.2008
Пользователь №: 596
Спасибо сказали: 0 раз




я можно сделать что бы история чата не выводилась при подключении, а просто можно было использовать только из меню?????
Go to the top of the page
+Quote Post
Sirius
сообщение 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
Go to the top of the page
+Quote Post
Liiion911
сообщение 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 поэтому надеюсь на вас ))
Go to the top of the page
+Quote Post
Gate001
сообщение 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 штук.
Прикрепленные файлы
Прикрепленный файл  chathist2.lua ( 14.09 килобайт ) Кол-во скачиваний: 36
 
Go to the top of the page
+Quote Post
Alexey
сообщение 18.10.2009, 16:09
Сообщение #7


7 квадратиков
*******

Группа: Модераторы
Сообщений: 792
Регистрация: 21.1.2009
Пользователь №: 1 895
Спасибо сказали: 299 раз




Когда-то поковырял для себя оригинальную муторовскую версию, сейчас возвращаться к этому нет желания, но первые 2 пункта в ней есть, а третий нереализуем.

Цитата(Sirius @ 8.2.2009, 23:05) *
[21:01] Синтаксис E:\Ptokax\scripts\ChatHist.lua:159: attempt to index a nil value

Эта ошибка тоже исправлена.

Прикрепленный файл  ChatHistory107.lua ( 15.56 килобайт ) Кол-во скачиваний: 116




Спасибо сказали:
Go to the top of the page
+Quote Post
Gate001
сообщение 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)

Сам скрипт вроде как включается.
Истории нет, меню нет.
Go to the top of the page
+Quote Post
Setuper
сообщение 18.10.2009, 18:32
Сообщение #9


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1707 раз




Автору темы: Нужно правильно оформить тему!
Go to the top of the page
+Quote Post
Alexey
сообщение 18.10.2009, 21:26
Сообщение #10


7 квадратиков
*******

Группа: Модераторы
Сообщений: 792
Регистрация: 21.1.2009
Пользователь №: 1 895
Спасибо сказали: 299 раз




Папка ChatHist, в которой скрипт пытается сохранять свои файлы, создана?
Go to the top of the page
+Quote Post
Gate001
сообщение 19.10.2009, 16:08
Сообщение #11


Активный участник
***

Группа: Пользователи
Сообщений: 52
Регистрация: 10.10.2009
Пользователь №: 4 687
Спасибо сказали: 3 раза




Извиняюсь, совсем забыл.
Скрипт работает!!! Все что надо пашет!!!
Причина редактирования: Излишняя реклама | X-Sky
Go to the top of the page
+Quote Post
engineer
сообщение 23.12.2009, 0:25
Сообщение #12


Участник
**

Группа: Пользователи
Сообщений: 32
Регистрация: 14.7.2009
Из: Россия
Пользователь №: 3 871
Спасибо сказали: 1 раз




Моя версия отличается отсутствием показа счетчика количества последних сообщений (лишнее нагромождение). В чат выводится просто имя бота "последние 10 сообщений в чате" и ниже сообщения. Имеется возможность выбора кому показывать. Кстати тут уже интересовались именно простой версией
Цитата(DEM0N @ 13.8.2008, 16:52) *
а можно зделать чтобы он не в пм отправлял а в обычный чат? и чтобы просто было написано
последние 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
Go to the top of the page
+Quote Post
Артём
сообщение 23.12.2009, 1:15
Сообщение #13


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 605
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 766 раз




ВАСЯ
прикрепляй скрипт, а не пости код.
Go to the top of the page
+Quote Post
engineer
сообщение 23.12.2009, 1:22
Сообщение #14


Участник
**

Группа: Пользователи
Сообщений: 32
Регистрация: 14.7.2009
Из: Россия
Пользователь №: 3 871
Спасибо сказали: 1 раз




Артём, как прикажете big_smile.gif, только от вашего бурного участия в моих немногочисленных сообщениях на форуме толку пока что 0% ))). Замечания можно в личку кидать, дабы не флудить.
Прикрепленный файл  chat_history.lua ( 3.27 килобайт ) Кол-во скачиваний: 60
Go to the top of the page
+Quote Post
Артём
сообщение 23.12.2009, 1:32
Сообщение #15


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 605
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 766 раз




big_smile1.gif , а не проще было в той же теме выложить?)))
Go to the top of the page
+Quote Post
engineer
сообщение 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]
Дальше думаю понятно =)"
Если бы нам было понятно, наверно мы (тупоголовые) не бродили бы по форумам с вопросами big_smile.gif.
В переведенном скрипте эти строчки выглядят так:
открыть
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

Подскажите, где собака порылась?
Go to the top of the page
+Quote Post
Setuper
сообщение 23.12.2009, 14:17
Сообщение #17


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1707 раз




for i = 1, n do str = str.."\r\n"..chathistory[i] end
Go to the top of the page
+Quote Post
engineer
сообщение 23.12.2009, 15:45
Сообщение #18


Участник
**

Группа: Пользователи
Сообщений: 32
Регистрация: 14.7.2009
Из: Россия
Пользователь №: 3 871
Спасибо сказали: 1 раз




Не проходит, так вообще не выводит
Go to the top of the page
+Quote Post
Setuper
сообщение 23.12.2009, 15:47
Сообщение #19


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1707 раз




Ну так инициализируй строку, чтобы проходило:

Код
local str = ""
for i = 1, n do str = str.."\r\n"..chathistory[i] end
Go to the top of the page
+Quote Post
engineer
сообщение 23.12.2009, 16:58
Сообщение #20


Участник
**

Группа: Пользователи
Сообщений: 32
Регистрация: 14.7.2009
Из: Россия
Пользователь №: 3 871
Спасибо сказали: 1 раз




Мозги уже опухли... ничего у меня не получается. Скачал все заново, сконвертировал, теперь без правки не работает и с правкой не работает. Думаю проще прилепить оригинал под PtokaX 0.3.6.0. Если кто займется правильным конвертированием и приведению в дееспособность, буду очень благодарен. Сложно что-то делать ничего не понимая в этом big_smile.gif
Прикрепленный файл  chat_history_orig.lua ( 3.08 килобайт ) Кол-во скачиваний: 38
Go to the top of the page
+Quote Post

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new Topic has attachmentsАнтипорн By Mutor, Бан По Ттн
API1, API2 | База порнухи около 500 ТТН
49 district 36 766 17.11.2012, 19:19 Посл. сообщение: Alexey
No New Posts Topic has attachmentsUserInfo_v0.2___by_Nickolya + Hider (Mutor)
7 X-Sky 5 997 25.11.2010, 20:34 Посл. сообщение: X-Sky
No New Posts От: Антипорн By Mutor, Бан По Ттн
От темы с ID: 573
0 Spongebob 2 582 19.12.2008, 21:30 Посл. сообщение: Spongebob
No New Posts Topic has attachmentsReboot Msg By Mutor
API2
1 MEXAHuK 3 859 4.12.2008, 22:32 Посл. сообщение: Wariner

 



RSS Сейчас: 20.8.2018, 15:39