Топик - Приветственное Сообщение |
Здравствуйте, гость ( Вход | Регистрация )
Топик - Приветственное Сообщение |
29.3.2009, 10:33
Сообщение
#1
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Помогите со скриптом... Вообщем заметил в DBHUB такую вещь:
Цитата [10:09:37] <Robot> Тема: 'Добро пожаловать!', установил Admin (Mon Oct 19 22:21:10 2008) [10:09:37] <Robot> Привет STRELOK, добро пожаловать на HUB. Ваш IP: 10.2.136.203 Захотелось мне тоже прикрепить такое себе на хаб, вот мои наброски: Код sBot = SetMan.GetString(21) function UserConnected(tUser) Core.SendToUser(tUser, "<"..sBot.."> Тема: '"..SetMan.GetString(не помню цифру).."', установил "..user.sNick.." (%d.%m.%y / %H:%M:%S)") Core.SendToUser(tUser, "<"..sBot.."> Привет "..tUser.sNick..", добро пожаловать на "..SetMan.GetString(0)..". Ваш IP: "..tUser.sIP) end RegConnected = UserConnected OpConnected = UserConnected Помогите доработать |
|
|
29.3.2009, 11:23
Сообщение
#2
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
ты хочешь чтобы мы сделали сохранение истории смены топика?
|
|
|
29.3.2009, 11:24
Сообщение
#3
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
цифра топика 10
а чтобы знать кто установил и когда надо писать другой кусок скрипта который отслеживает команду топика записывает того кто пользовал её и дату в файл. после чего от туда выводит в приветствие! |
|
|
29.3.2009, 11:44
Сообщение
#4
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Код TopLog = {} filename = "TopicLogs\\" sBot = SetMan.GetString(21) function UserConnected(tUser) Core.SendToUser(tUser, "<"..sBot.."> Тема: '"..SetMan.GetString(10).."', установил "..user.sNick.." (%d.%m.%y / %H:%M:%S)") Core.SendToUser(tUser, "<"..sBot.."> Привет "..tUser.sNick..", добро пожаловать на "..SetMan.GetString(0)..". Ваш IP: "..tUser.sIP) end RegConnected = UserConnected OpConnected = UserConnected SetMan.SetString(10,NewTopic) day = os.date("[%d.%m.%y].txt") if io.open(filename..day) == nil then io.open(filename..day,"w") end dofile(filename..day) i = #TopLog+1 CurTime = os.date("[%H:%M-%d.%m.%y]") TopLog[i] = "~"..CurTime.."~ ~"..tUser.sNick.."~ ~"..NewTopic.."~" SaveToFile(filename..day, TopLog, "TopLog") 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 pairs(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.."}" collectgarbage(collect) return sTmp end function SaveToFile(file , table , tablename) local handle = io.open(file,"w+") handle:write(Serialize(table, tablename)) handle:flush() handle:close() end Вроде бы это и есть функция сохранения топика, только вот не знаю, правильно ли я её сконфигурировал |
|
|
29.3.2009, 11:51
Сообщение
#5
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
бред написан
этот кусок: Код SetMan.SetString(10,NewTopic) будет выполняться только пи загрузке скрипта, да и написан он с ошибками
day = os.date("[%d.%m.%y].txt") if io.open(filename..day) == nil then io.open(filename..day,"w") end dofile(filename..day) i = #TopLog+1 CurTime = os.date("[%H:%M-%d.%m.%y]") TopLog[i] = "~"..CurTime.."~ ~"..tUser.sNick.."~ ~"..NewTopic.."~" SaveToFile(filename..day, TopLog, "TopLog") |
|
|
29.3.2009, 11:51
Сообщение
#6
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
вообще не о чём...
1)поиск команды в ChatArrival 2)по нахождению записываем в таблицу 2строчки дату и юзера 3) сохраняем таблицу. 4)выводим из неё данные при заходе юзера. |
|
|
29.3.2009, 12:31
Сообщение
#7
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Код local tProfile = { [0] = 1, [1] = 1, [2] = 1, } local filename = "Topic.tbl" local Bot = SetMan.GetString(21) tTopic = { sDate = "unknown", SetUser = "unknown", Topic = "unknown" } function OnStartup() if loadfile(filename) then dofile(filename) end end function UserConnected(tUser) Core.SendToUser(tUser, "<"..sBot.."> Тема: '"..tTopic.Topic.."', установил "..tTopic.SetUser.." ("..tTopic.CurTime..")") Core.SendToUser(tUser, "<"..sBot.."> Привет "..tUser.sNick..", добро пожаловать на "..SetMan.GetString(0)..". Ваш IP: "..tUser.sIP) end RegConnected = UserConnected OpConnected = UserConnected function ChatArrival(user,sData) sData = string.sub(sData,1,-2) local cmd = sData:match"%b<>%s+(%S+)" if cmd == "!topic" then if tProfile[tUser.iProfile] == 1 then local sMsg = sData:match"%b<>%s+%S+%s+(.*)" if not sMsg then Core.SendToUser(user, "<"..Bot.."> Вы не ввели текст топика") return true end tTopic = { sDate = os.date"%d.%m.%y / %H:%M:%S", SetUser = user.sNick, Topic = sMsg } SaveToFile(filename, tTopic, "tTopic") return true end end end function Serialize(tTable, sTableName, sTab) sTab = sTab or ""; sTmp = "" sTmp = sTmp..sTab..sTableName.." = {\n" for key, value in pairs(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 SaveToFile(file , table , tablename) local handle = io.open(file,"w+") handle:write(Serialize(table, tablename)) handle:flush() handle:close() end Вроде так написал? Но в таблицу не сохраняет... Цитата 32: attempt to call global 'SaveToFile' (a nil value)
|
|
|
29.3.2009, 12:38
Сообщение
#8
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
нужно последний end переместить до функции Serialize
я отредактировал твой пост |
|
|
29.3.2009, 12:47
Сообщение
#9
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Ошибка
Цитата :56: bad argument #1 to 'open' (string expected, got table)
|
|
|
29.3.2009, 13:17
Сообщение
#10
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
исправил ещё и ещё раз))
|
|
|
29.3.2009, 13:25
Сообщение
#11
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
исправил ещё и ещё раз)) Уже видел спасибо. Ставил, внёс небольшие изменения: Исправил: 1. При вводе команды !topic <текст> глушился чат (исправил) 2. Исправил "..tTopic.CurTime.." на "..tTopic.sDate.." (баг с датой) 3. Поправил строчку if tProfile[tUser.iProfile] == 1 then, чтобы работала команда !topic вообщем, вот исправленный вариант
Прикрепленные файлы
|
|
|
Похожие темы
|
Сейчас: 27.11.2024, 3:43 |