Всем привет. Вчера запустил свой хаб в локальной сети, но не могу найти скрипты для него. Скачал какой-то сборник, а там ничего толком не работает. Подскажите где можно скачать рабочие скрипты для PtokaX 0.4.1.2? Заранее спасибо.
Знакомая до боли картинка.
Ладно, что-то нашёл в Интернете с помощью Google, но чтобы не создавать тему отпишусь здесь.
В общем есть небольшой вопрос по скрипту LifeTimeBot (данный скрипт показывает возраст хаба). Так вот я в нём вбил дату создания хаба, но разница во времени показывается 3 часа, т. е. если я хаб создал в 2 часа дня, то скрипт выдаёт разницу в 3 часа (в 5 часов вечера), видимо в скрипте где-то задаётся часовой пояс, но я не нашёл где. Помогите, буду благодарен. Код прилагаю ниже:
tSettings = {
-- Имя бота
sBot = SetMan.GetString(21),
-- Название менюшки
sMenu1 = SetMan.GetString(21),
sMenu2 = "Информация",
sMenu3 = "Возраст хаба",
-- Дата "Рождения хаба"
iSetup = {
year = 2010,
month = 2,
day = 24,
hour = 14,
min = 43,
sec = 02
},
-- Обновлять топик? [true = да, false = нет]
bUpdateTopic = false,
-- С какой периодичностью обновлять топик? (в часах)
iTime = 1,
}
OnStartup = function()
end
OnTimer = function(tmr)
-- Update Topic
if tSettings.bUpdateTopic then
local iDiff = os.difftime(os.time(os.date("!*t")), os.time(tSettings.iSetup))
if iDiff > 0 then
local tTopic = {
"Наш хаб существует уже [TIME]",
"Нашему хабу: [TIME]",
"Наш хаб держится на плаву вот уже [TIME]",
"Дата 'Рождения' хаба: [TIME]",
}
local sTopic = string.gsub(tTopic[math.random(1, #tTopic)], "%[TIME%]", SecondsToTime(iDiff, true))
SetMan.SetString(10,sTopic)
end
end
collectgarbage(gc); io.flush()
end
ChatArrival = function(user,data)
Core.GetUserAllData(user)
local _,_, to = string.find(data, "^$To:%s(%S+)%s+From:")
local _,_, msg = string.find(data, "%b<>%s(.*)|$")
if (to and to == tSettings.sBot) or not to then
local _,_, cmd = string.find(msg, "^%p(%S+)")
if cmd and tCommands[string.lower(cmd)] then
cmd = string.lower(cmd)
if tCommands[cmd].tLevels[user.iProfile] and tCommands[cmd].tLevels[user.iProfile] == 1 then
return tCommands[cmd].fFunction(user, msg), 1
else
return Core.SendToNick(user.sNick,"<"..tSettings.sBot.."> Ошибка: У Вас нет доступа к данной команде!"), 1
end
end
end
end
ToArrival = ChatArrival
UserConnected = function(user)
Core.GetUserAllData(user)
if user.bUserCommand then
for i, v in pairs(tCommands) do
if v.tLevels[user.iProfile] then
Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tSettings.sMenu1.."\\"..tSettings.sMenu2.."\\"..v.tRC[1]..
"$<%[mynick]> !"..i..v.tRC[2].."|")
end
end
end
Core.SendToNick(user.sNick,"<"..tSettings.sBot.."> Добро пожаловать на "..(SetMan.GetString(0) or "Неизвестный хаб").." !"); tCommands["lifetime"].fFunction(user)
end
OpConnected = UserConnected
tCommands = {
lifetime = {
fFunction = function(user)
local iDiff = os.difftime( os.time(os.date("!*t")), os.time(tSettings.iSetup))
if iDiff > 0 then
Core.SendToNick(user.sNick,"<"..tSettings.sBot.."> Нашему хабу уже "..
SecondsToTime(iDiff).."!!! Текущее время работы хаба: "..SecondsToTime(Core.GetUpTime(), true).."!")
else
Core.SendToNick(user.sNick,"<"..tSettings.sBot.."> Ошибка! Вы ввели неправильную дату 'рождения' хаба!")
end
end,
tLevels = {
[-1] = 1, [0] = 1, [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1,
},
tRC = { "Показать возраст хаба", "" }
},
}
SecondsToTime = function(iTime, bSmall)
string.gmatch = (string.gmatch or string.gfind)
local T = os.date("!*t", tonumber(iTime));
local sTime = string.format("%i г. %i мес. %i дн. %i час. %i мин.", T.year-1970, T.month-1, T.day-1, T.hour, T.min)
if bSmall then
for i in string.gmatch(sTime, "%d+") do
if tonumber(i) == 0 then sTime = string.gsub(sTime, "^"..i.."%s(%S+),%s", "") end
end
end
return sTime
end
RegConnected = UserConnected
Спасибо конечно, но не помогло. Я решил проблему просто поставив время создания 11:42, а считает на 3 часа позже как положено.
Возникла ещё 1 проблемка, скачал скрипт погоды, а он не работает. Зашёл на гис.метео, выставил свой город, но безуспешно. Может кто знает как правильно настроить? Буду благодарен. Код ниже:
--Ниже находится то, что можно настраивать
sBotName="Погода"
iCityCode = 99948 -- Код города в gismeteo
iExpireTimeSuccess = 60 * 60 * 6 -- 6 часов Время обновления в случае удачного получения данных
iExpireTimeFail = 60 -- 1 минута - Интервал повторения попыток, если получить данные не удалось
sUpChar="•" -- Символ-заполнитель верхней и нижней строк
iUpChar = 75 * 2 -- Кол-во символов-заполнителей верхней и нижней строк. Нужно подобрать, если будет изменен символ-заполнитель.
sMidChar = "" -- Символ-заполнитель для разделителя. У меня убрано, т.к. мне кажется, что мешает.
iMidChar = 154 -- Кол-во символов-заполнителей разделителя. Нужно подобрать, если будет изменен символ-заполнитель.
sMainMenu = "Узнать погоду" -- Название головного меню для команды
--Выше находится то, что можно настраивать
iExpireTime=iExpireTimeSuccess
sAddr = "http://informer.gismeteo.ru/xml/99948_1.xml"
iLastTime = 0
sMsg = ""
sMainMenu = sMainMenu.."\\"
tReqUsers = {}
UserConnected = function(user, data)
Core.SendToUser(user, "$UserCommand 1 3 "..sMainMenu.."Погода $<%[mynick]> !погода".."|")
end
OpConnected = UserConnected
ChatArrival = function(user, data)
local data = string.sub(data,1,-2)
local _,_,cmd = string.find(data, "%b<>%s+%p(%S+)")
if (cmd == "погода") then
local difftime = os.difftime(os.time(), iLastTime)
if (difftime > iExpireTime) then
table.insert(tReqUsers, user)
Core.SendToUser(user, "<"..sBotName.."> Данные устарели, запрашиваю сервер...")
GetInfo()
iLastTime = os.time()
else
Core.SendToUser(user, "<"..sBotName.."> \n"..sMsg)
end
return true
end
end
GetInfo = function()
local s=require("socket")
assert(s,"Ошибка загрузки библиотеки socket. Проверьте наличие файлов необходимых библиотек.")
local h = require("socket.http")
assert(h,"Ошибка загрузки библиотеки socket.http. Проверьте наличие файлов необходимых библиотек.")
local fd,sz,hd = h.request(sAddr)
if fd and sz then
iExpireTime=iExpireTimeSuccess
sMsg = string.rep(sUpChar,iUpChar/2).."ПРОГНОЗ ПОГОДЫ"..string.rep(sUpChar,iUpChar/2).."\n"
local _,_,i1,i2,i3,i4 = string.find(fd,"<item>(.*)</item>.*<item>(.*)</item>.*<item>(.*)</item>.*<item>(.*)</item>")
if (i1 ~= nil) then
local _,_,t1,d1 = string.find(i1,"<title>(.*)</title>.*<description>(.*)</description>")
if (t1 ~= nil and d1 ~= nil) then
sMsg = sMsg..t1.."\t"..d1.."\n"
end
end
if sMidChar~="" then sMsg = sMsg..string.rep(sMidChar,iMidChar).."\n" end
if (i2 ~= nil) then
local _,_,t2,d2 = string.find(i2,"<title>(.*)</title>.*<description>(.*)</description>")
if (t2 ~= nil and d2 ~= nil) then
sMsg = sMsg..t2.."\t"..d2.."\n"
end
end
if sMidChar~="" then sMsg = sMsg..string.rep(sMidChar,iMidChar).."\n" end
if (i3 ~= nil) then
local _,_,t3,d3 = string.find(i3,"<title>(.*)</title>.*<description>(.*)</description>")
if (t3 ~= nil and d3 ~= nil) then
sMsg = sMsg..t3.."\t"..d3.."\n"
end
end
if sMidChar~="" then sMsg = sMsg..string.rep(sMidChar,iMidChar).."\n" end
if (i4 ~= nil) then
local _,_,t4,d4 = string.find(i4,"<title>(.*)</title>.*<description>(.*)</description>")
if (t4 ~= nil and d4 ~= nil) then
sMsg = sMsg..t4.."\t"..d4.."\n"
end
end
sMsg = sMsg..string.rep(sUpChar,iUpChar/2).."ПРОГНОЗ ПОГОДЫ"..string.rep(sUpChar,iUpChar/2).."\n"
--sMsg=string.gsub(sMsg,"Южно%-Сахалинск: ", "") --Раскомментируйте, если хотите убрать название города в начале строки и чувствуете в себе силы забить шаблон вашего города. Лично я знаю, в каком городе живу.
else
iExpireTime=iExpireTimeFail
sMsg="Прогноз погоды в данный момент недоступен. Попробуйте позже."
end
for i, user in ipairs(tReqUsers) do
Core.SendToUser(user, "<"..sBotName.."> \n"..sMsg)
end
end
хм , а вы не пробовали сначало узнать что еще нужно для работы этого скрипты??? мож надо какую нить библиотеку ставить , которую можно найти там же в Гугле
Эх.... Для работы всех подобных скриптов которые работают с интернетом нужна библиотека Luasocket.
Тут есть повод обратится вот к http://www.google.com/webhp?hl=ru этому дядьке.
Последний раз редактировалось Saymon 08 мар 2010, 11:27, всего редактировалось 2 раза.
Это дай ip-adres своего хаба тогда ешо ..???
Я из далёкого места ваше далеко живу далеко далеко!!
Я те хотел жобавить скрипт но неполучилось потомучто у меня много знаков когда сделаеш больше тогда и вклад сделаю...
-- This script is converted with PtokaX LUA API Converter v0.9 at 01/17/08 15:57:18
--Chat History On Entry 1.02 LUA 5
--By Mutor The Ugly 4/14/04
--
--Based on a script by Tezlo 1/17/04
--Send chat history to PM on entry
--Перевел и конвертировал в LUA 5.1 X-Ray 01/06/2006
-- +Converted to LUA 5 2/22/05
-----------------------------------------------------------
chatfile = "Chat_History/chathistory.dat" -- путь до файла данных
maxhistory = 20 -- максимум строк чата для хранения в кеше
botname = "[История_чата]" -- имя бота
BadChars = {".","?","!","+","-",} -- разрешенные префиксы
function OnStartup()
chathistory = dofile(chatfile) or {}
Core.RegBot(botname,"","",true) -- Comment this line to not have bot appear in user list. Note: If botname is not registered, default dc++ settings will not allow pm's to pop up
-- Enable Pop up messages from offline users / Disable ingnore messages from offline in client 'advanced dc settings'. To allow pop from unregistered botname.
end
function OnExit()
savehistory()
end
function UserConnected(user)
Core.GetUserAllData(user)
local n = #chathistory
local str = "<»«»«»«»«»«»«»«[ Последние ( "..n.." ) сообщений чата ]»«»«»«»«»«»«»«>\r\n"
for i = 1, n do str = str.."\r\n"..chathistory[i] end
Core.SendToNick(user.sNick,"<"..botname.."> "..str.."\r\n") -- в Main
-- user:SendPM(botname,str.."\r\n") -- в PM
Core.SendToNick(user.sNick,"<"..botname.."> <»«»«»«»«»«»«»«»«»«[ Конец истории чата ]»«»«»«»«»«»«»«»«»«>")
-- user:SendPM(botname,"<»«»«»«»«»«»«»«»«»«[ Конец истории чата ]»«»«»«»«»«»«»«»«»«>")
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 when = os.date("[%H:%M] ")
local chat = string.sub(data, 1, -2)
for k,v in pairs(BadChars) do
if pre == v then -- disallow command input to cached chat
return
end
end
table.insert(chathistory,when..chat)
if #chathistory > maxhistory then table.remove(chathistory, 1) end
savehistory()
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,"savehistory failed: "..e
end
end
function loadfile(chatfile)
local f,e = io.open( chatfile, "r" )
if f then
local r = f:read( "*a" )
f:close()
return r
else
return nil,"loadfile failed: "..e
end
end
RegConnected = UserConnected