Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
29.5.2010, 13:42 |
Textfiles_manager_and_updater API1, API2 | Обновление TXT файлов по интервалу |
Добавил нужную тебе фишку в скрипт, надеюсь все как надо, плюс совместил апи 1 и 2 в одном скрипте и профиксил один глюк там. |
Invisible, Kingston, TiGRpp, ramzes | ||
26.5.2010, 10:48 |
InfoMenu API2 | Скрипт показывающий информацию о хабе и о юзере в меню |
Заменить Код a,b,c = tonumber(a),tonumber(b),tonumber(c) на Код a,b,c = tonumber(a or 0),tonumber(b or 0),tonumber(c or 0) |
Saymon21, TiGRpp, ™Wizard™, sania | ||
23.5.2010, 20:53 |
Нужен скрипт описания. |
Может проще отключить его в принципе своем? Или там необходимо у всех что-то писать??? Подобные скрипты для птоки - сущий изврат. |
intlive, forZejkee | ||
23.5.2010, 19:06 |
BanLogger API2 | Логирование банов, вывод в чат по команде |
Обрезанный донельзя скрипт: CODE tBanCmds = { ban = true, banip = true, fullban = true, fullbanip = true, nickban = true, tempban = true, tempbanip = true, fulltempban = true, } function OnStartup() sBot = SetMan.GetString(21) tWhomWeSee = {} tBansLog = {} tMasterBansLog = {} sPath = Core.GetPtokaXPath().."scripts/" if loadfile(sPath.."tBansLog.tbl") then dofile(sPath.."tBansLog.tbl") end if loadfile(sPath.."tMasterBansLog.tbl") then dofile(sPath.."tMasterBansLog.tbl") end TmrMan.AddTimer(1000, "OnTimer1") end function OnTimer1() local tRemove = {} for i, tData in ipairs(tWhomWeSee) do local tBan = BanMan.GetBan(tData[1]) if tBan then if tBan[1] then tBan = tBan[#tBan] end local tBanTbl = { sBy = tBan.sBy or tData[2], iTime = tData[3], iExpireTime = tBan.iExpireTime, sIP = tBan.sIP, sNick = tBan.sNick, bIpBan = tBan.bIpBan, bNickBan = tBan.bNickBan, bFullIpBan = tBan.bFullIpBan, sReason = tBan.sReason, } if tBanTbl.sNick then if not tBansLog[tBanTbl.sNick] then tBansLog[tBanTbl.sNick] = {} end table.insert(tBansLog[tBanTbl.sNick], tBanTbl) end if tBanTbl.sIP then if not tBansLog[tBanTbl.sIP] then tBansLog[tBanTbl.sIP] = {} end table.insert(tBansLog[tBanTbl.sIP], tBanTbl) end if not tMasterBansLog[tData[2]] then tMasterBansLog[tData[2]] = {} end table.insert(tMasterBansLog[tData[2]], tBanTbl) SaveToFile(sPath.."tBansLog.tbl", tBansLog, "tBansLog") SaveToFile(sPath.."tMasterBansLog.tbl", tMasterBansLog, "tMasterBansLog") table.insert(tRemove, 1, i) elseif tData[3] + 5 > os.time() then table.insert(tRemove, 1, i) end end for _, i in ipairs(tRemove) do table.remove(tWhomWeSee, i) end end function ChatArrival(tUser, sData) local _,_, sCmd, sWhoBanned = string.find(sData, "%b<>%s+%p(%S+)%s+(%S+).*|$") if sCmd then sCmd = sCmd:lower() if sWhoBanned and tBanCmds[sCmd] then-- and not BanMan.GetBan(sWhoBanned) then table.insert(tWhomWeSee, {sWhoBanned, tUser.sNick, os.time()}) end end end ToArrival = ChatArrival function SaveToFile(sFileWay, tTable, sTableName) local sHandle = io.open(sFileWay,"w+") Serialize(tTable, sTableName, sHandle) sHandle:flush() sHandle:close() end function Serialize(tTable, sTableName, sHandle, sTab) local sTab = sTab or "" sHandle:write(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 Serialize(value, sKey, sHandle, sTab.."\t") else local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value) sHandle:write(sTab.."\t"..sKey.." = "..sValue) end sHandle:write(",\n") end sHandle:write(sTab.."}") end |
X-Sky | ||
23.5.2010, 18:19 |
Вопрос по Командам PtokaX 0.4.1.1 хочу узнать |
Ответ тут. Надеюсь найдешь в ответе и осознаешь. Для полной уверенности покопайся в менеджере профилей. |
-=FugeN=- 2 | ||
21.5.2010, 15:17 |
С Днюхой Тебя! поздравления |
Спасибо! Заодно можно считать что и форуму исполнился еще 1 год По моим скромным подсчетам, если я ничего не упустил, это 2 года! Всем преданным читающим админам - СПАСИБО! |
Saymon21 | ||
20.5.2010, 12:11 |
Редирект по времени |
Если еще актуально - вот, набросал по-быстрому: Код -- Профили для перенаправления: tRedirectProfiles = { [3] = true, [-1] = true, } -- Таблица редиректов: tRedirects = { "mydc.ru", "localhost", } -- Время в секундах на смену сервера iChangeTime = 1*60*60 -- Минимальная для входа шара, в байтах: iMinShare = 100*1024^3 -- 100 Gb -- Причина редиректа: sRedirectReason = "Маленькая шара, минимальная шара - 100 Гигабайт!" function OnStartup() iTimeToChange = os.time() + iChangeTime iRedirectHub = 1 end function UserConnected(tUser) if tRedirectProfiles[tUser.iProfile] and (Core.GetUserValue(tUser, 16) or 0) < iMinShare then if os.time() > iTimeToChange then iTimeToChange = os.time() + iChangeTime iRedirectHub = iRedirectHub + 1 if not tRedirects[iRedirectHub] then iRedirectHub = 1 end end Core.Redirect(tUser, tRedirects[iRedirectHub], sRedirectReason) Core.Disconnect(tUser) end end RegConnected = UserConnected OpConnected = UserConnected |
Exodus, мамин_парень | ||
19.5.2010, 23:22 |
Подправьте скриптик регистрации Нужно подправить скрипт регистрации |
Если у тебя Код tProfiles = { -- кому будут доступны команды то для доступа Operator, Moderator, Admin, VipAdmin надо сделать таблицу такой:[5] = 1, -- [Reg] [4] = 1, -- [ViP] [3] = 1, -- [Operator] [2] = 1, -- [Moderator] [1] = 1, -- [Admin] [0] = 1, -- [VipAdmin] [-1] = 0, -- [UnReg] } Код local CanDo ={[3]=1,[2]=1,[1]=1,[0]=1,} Разбирайся и пробуй или излагай то, что ты хочешь в понятной для всех форме и, что главное, в полном объеме. |
sania | ||
19.5.2010, 22:57 |
Проблемы скрипта действий! Исправьте Проблемы скрипта действий! Исправьте |
Код ChatArrival = function(tUser,sData) замени наlocal s,e,cmd, S1= string.find(sData,"%b<>%s(%S+)%s(.+)") if ((cmd=="!экшн") or (cmd=="!action")) and (tProfiles[tUser.iProfile]==0) then Core.SendToUser(tUser,"<"..SetMan.GetString(21).."> Недостаточно прав для выполнения команды") return true end S1 = string.sub(S1,1,string.len(S1)-1) if cmd == "!экшн" then Core.SendToAll("## "..tUser.sNick.." "..S1.." ##") return true end if cmd == "!action" then Core.SendToAll(">> "..tUser.sNick.." "..S1.." <<") return true end end Код ChatArrival = function(tUser,sData) local cmd, S1 = sData:match "^%b<>%s(%S+)%s(.+)$" if cmd then if ((cmd=="!экшн") or (cmd=="!action")) and (tProfiles[tUser.iProfile]==0) then Core.SendToUser(tUser,"<"..SetMan.GetString(21).."> Недостаточно прав для выполнения команды") return true end S1 = string.sub(S1,1,string.len(S1)-1) if cmd == "!экшн" then Core.SendToAll("## "..tUser.sNick.." "..S1.." ##") return true end if cmd == "!action" then Core.SendToAll(">> "..tUser.sNick.." "..S1.." <<") return true end end end |
sania | ||
19.5.2010, 9:41 |
слоты хаба проблема на ptokax 0.4.1.1 |
Ищи в этой области, если галка не стоит, то информация отправляется, и поставить надо "Всем юзерам". |
baralgin | ||
18.5.2010, 18:44 |
слоты хаба проблема на ptokax 0.4.1.1 |
Скорее всего его клиент завязывает какой-нибудь параметр, типа автобана, на слотах, поэтому надо либо включить отображение тегов для всех в хабе, что рекомендуется для нормального файлообмена, либо копать настройки его апекса, либо ему сменить клиент. |
baralgin | ||
17.5.2010, 22:58 |
Kinozal_tv API2 | Скрипт новостей с трекера |
Добавь после Код UserConnected = function(user) следующий код:Код if os.time() > iLastTime then Проще некуда и никаких финансовых вложений GetInfo() end Core.SendPmToUser(user, sBot, sMsg) |
serrrios, Greeck, ImDim | ||
16.5.2010, 18:39 |
BashMySQL API2 | Цитатник рунета |
Отваливается соединение с БД, сделай как я писал чуть выше, и, если надо, сделай меньше интервал переподключения. |
Parad0x | ||
14.5.2010, 9:53 |
DC++ FAQ Часто Задаваемые Вопросы |
2alex82: [attachment=4496:_____________.png] 2=FugeN=- 2: поправил бы информацию и выделил все как надо чтобы было наглядно. |
alex82, Alexey, мамин_парень | ||
13.5.2010, 20:06 |
Ник нужна помощь |
Цитата Настройки -> Общие -> Вид -> Показывать статусные сообщения в главном чате Включи эту опцию и зайди на хаб со стандартным ником. Потом к автору сборки с просьбой не морочать мозги юзерам и включить эту опцию по умолчанию... А так все пишется в статусной строке: [attachment=4495:Olimpus_shit.png] |
voronf4 | ||
13.5.2010, 19:38 |
StatPX API1, API2 | Статистика хаба |
А база данных - не выход из ситуации? Хочешь пользоваться хорошей статистикой - ставь мускл и точка. |
shullz | ||
11.5.2010, 18:52 |
CheckPreFix API2 | контролирует приставку перед ником |
Странно что об этой ошибке не сообщили ранее... Замени строку 66 Код return Net_ISP, Net наКод return Net_ISP.tPrefs, Net FallenAngel, ты сам разобрался с этой ошибкой? |
FallenAngel, Drakula | ||
11.5.2010, 11:39 |
Фидонет? |
Запарено как-то это в интернете написано, может кто на пальцах рассказать?! |
X-Sky | ||
11.5.2010, 10:31 |
FirstRusHubBot приводим RusHub к рабочему виду функционалом скриптов |
Понятия ID нету в протоколе NMDC, так что банить по нему нельзя, по маку банить можно только в пределах сети где стоит хаб, это уже обсуждалось неоднократно, в птоке это не реализуемо. Если интересно - поищи по форуму. |
Drakula | ||
5.5.2010, 13:39 |
Функции Для Разработчиков склад полезных функций |
А смысл тасовать локали? При старте скрипта обозначил на русскую и пользуйся себе чисто string.lower и string.upper |
Ksan | ||
3.5.2010, 20:48 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
К примеру так: Код sWay = "D:/somefile.html?#34; sHTML = [[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Какая-то инфа...</title> </head> <body> <table border="1" cellspacing="0" cellpadding="10"> <tr> <td>Ник Забаненого</td> <td>Ip Забаненого</td> <td>Кем забанен</td> <td>Причина бана</td> <td>Разбан</td> </tr> [BODY] </table> </body> </html>]] sTableSell = [[ <tr> <td>[1]</td> <td>[2]</td> <td>[3]</td> <td>[4]</td> <td>[5]</td> </tr>]] function OnStartup() SaveToHtml() end function SaveToHtml() local tTable = BanMan.GetBans() local sData = {} for i,v in pairs(tTable) do local tData = { ["1"] = tostring(v.sNick or " "), ["2"] = tostring(v.sIP or "Бан по нику"), ["3"] = tostring(v.sBy or "Неопределена"), ["4"] = tostring(v.sReason or "Не указана"), ["5"] = tostring(v.iExpireTime or "<постоянный>"), } local sSell = sTableSell:gsub("%[(%S-)%]", tData) table.insert(sData, sSell) end sData = table.concat(sData) local sHTML = sHTML:gsub("%[BODY%]", sData) SaveDataToFile(sWay, sHTML) end function SaveDataToFile(sFileWay, sData) local sHandle = io.open(sFileWay, "w+") sHandle:write(sData) sHandle:flush() sHandle:close() end |
intlive | ||
3.5.2010, 20:32 |
Блок по тегу Скрипт блокировки по тегу |
Попробуй второй из предложенных в 12 посту темы, может он будет работать, написан он по аналогии с тем что предлагали тебе первым. |
valdis73 | ||
3.5.2010, 20:00 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Видимо ты плохо знаешь html, вот пример таблицы, которая тебе нужна, строка идет в структуре таблицы значениями друг за другом, так что трудности вывести все баны в такую таблицу - минимум: Код <table border="1" cellspacing="0" cellpadding="10"> <tr> <td>Ip Забаненого</td> <td>Кем забанен</td> <td>Причина бана</td> <td>Разбан</td> </tr> <tr> <td>127.0.0.1</td> <td>Nickolya</td> <td>просто так</td> <td>никогда...</td> </tr> <tr> <td>10.0.10.3</td> <td>неизвестно</td> <td>аналогично</td> <td>через 14 минут</td> </tr> </table> |
intlive | ||
2.5.2010, 11:23 |
User Info 1.0 (русская Версия) API2 | Скрипт для просмотра информации о юзерах |
Чтобы понимало и кириллические буквы надо Код local _,_,nick = string.find(data,"%p%S+ (%w+)") заменить наКод local _,_,nick = string.find(data,"%p%S+ (%S+)") |
Invisible, DrakonSP, Saymon21, TiGRpp | ||
30.4.2010, 13:55 |
Логотип для RusHub'а ваши варианты и предложения |
Вот еще вариант... |
X-Sky, bot9ra | ||
29.4.2010, 21:55 |
Логотип для RusHub'а ваши варианты и предложения |
Уффффф... Никто и не обижается, тут все-таки идет обсуждение и выдвижение своих вариантов. Что касается дизайна... У нас нет порядка 5к долларов на логотип, а изучив тех кто занимается именно логотипами на самом популярном портале фрилансеров, лично я не пришел в восторг. Дизайном я занимаюсь этим уже более года, в тандеме с очень опытным редактором, которая работала с десятком дизайнеров, правда моя направленность - печатное издание (CMYK - наше все)). Не скажу что я профи, лишь самоучка, как и во всем, кроме экономических наук и английского языка, но кое-что умею. Попробую немного покритиковать, надеюсь никто не обидится. У нас есть продукт - новейший российский хаб-софт, работающий ооочень быстро Не думаю что нечто старое нам подойдет. Потом делать огромный акцент на страну происхождения тоже не стоит, в глобальных планах - распространение программы по всему миру, а для того чтобы узнавать иконку софта среди сотни-другой в трее (папке, баре, на рабочем столее...) нужна определенная оригинальность. Про то что разработчик из России будет известно всем по пришествию популярности, которая заслуживается качеством продукта. А теперь давайте отвлечемся от всего и взглянем в папку где у вас лежат ярлыки, на рабочий стол, в трей, и посмотрим, что именно Вам приятней и узнаваемей, лично я вижу логотипы Оперы, ФФокса, Хрома, Фотошопа, Индизайна, Иллюстратора, Дримвейвера, Акробата (Адобе не такие уж и простаки чтобы делать такие иконки), Корела, Касперского, Квипа, ЗеБата, Вебмани-кипера, Ворда, Экселя, Птоки, Унхаба, Ноутпада, уТоррента и так далее, вдумайтесь в смысл, что несет в себе иконка, она же логотип... Исходя из этих мыслей, стремящаяся вперед фигурка человечка, она же буква R, вполне удволетворяет требованиям, Wariner, я сам увидел этот "поршень" минут 30 назад, наверно сказывается все-таки увлечение агрегатом "машина") А теперь давайте включать воображение, без него все грустно, уныло, не креативно, допустим поршень, пусть, это движение, мощь, скорость, что угодно. Правда от этого исполнения в уже изменившемся видении логотипа мы ушли. Давайте продолжим обсуждение дабы найти все-таки истину, ведь она где-то рядом Любая, даже самая бредовая идея будет в плюс, так что смелее! Выкладывайте сочетания цветов, формы, шрифты, что пожелаете... Спасибо за внимание, ваш покорный слуга, N ;) Вот более старый вариант, может тут кто-то найдет долю интересной идеи. |
Saymon21, X-Sky | ||
29.4.2010, 17:02 |
Логотип для RusHub'а ваши варианты и предложения |
Немного пополнив базу знаний о логотипах и потрудившись в перерывах пару дней получили вот что, оцените |
X-Sky | ||
28.4.2010, 12:51 |
Antibot API2 | Скрипт против ботов |
Пробуй... Опция в самом начале Код local iBlockType = 3 -- Тип блокировки, 1 - блокировать только чат, 2 - приват, 3 - все сразу |
*FoxMalder* | ||
28.4.2010, 10:03 |
Нужен скрипт тотализатор для гонок Проводим гонки по лок сети ф1 |
Ты нашел немного не тот скрипт, хорошо, подумаю как сделать все красиво, получится типа скрипта голосований, возможно его и возьму за основу. А отсылать всем юзерам с определенным префиксом можно вот таким способом: Код local tOnlineUsers = Core.GetOnlineUsers() если сам запихнешь в функцию и приделаешь таймер - молодец for _, tUser in ipairs(tOnlineUsers) do if tUser.sNick:match "^%[FI4%]" then Core.SendToUser("*** Сообщение...") end end |
van21 | ||
28.4.2010, 8:56 |
Можно ли банить по мак-адресу? |
Птокой это никак не реализуется, вот в русхабе - можно, но красивого скрипта банов так и нет, если перейдешь на русхаб - только скажи, напишу как сделать чтобы забанить твоего "урода". |
li4nost | ||
22.4.2010, 9:13 |
Новая социальная сеть "Всибири" |
Если всего 17 человек, то один может дружить с другими 16, значит теоретически там может быть цифра в 17*16=272, может быть логика такова |
X-Sky | ||
15.4.2010, 9:01 |
Guess Country ; Страны API2 |
Прости меня Тём, это я скосячил. Там где Код return ChkGuess(user.sNick) надо сделать конструкцию вида Код local a1 = ChkGuess(user.sNick) без возвращения truereturn a1 Т.е. получается вот такой код: Код allguess = {function(user,data,cmd) if user then if not Players[Gc.Bot] then Players[Gc.Bot] = {1,os.time(),GetCn()} end if not Tmr then Tmr = TmrMan.AddTimer(1000) end local a1 = ChkGuess(Gc.Bot,_,user.sNick) return a1, true else return "Угадайте страну ( всем хабом )", "", "", "" end end, {[-1] = false,[0] = true,[1] = true,[2] = true,[3] = true} }, guess = {function(user,data,cmd,to) if user then if not Players[user.sNick] then Players[user.sNick] = {1,os.time(),GetCn(),to} end if not Tmr then Tmr = TmrMan.AddTimer(1000) end local a1 = ChkGuess(user.sNick) return a1 else return "Угадайте страну ( сами )", "", "", "" end end, {[-1] = false,[0] = true,[1] = true,[2] = true,[3] = true} }, |
Артём, TiGRpp | ||
14.4.2010, 13:45 |
Guess Country ; Страны API2 |
Хм, у меня такого глюка нету... Попробуй заменить Код return ChkGuess(Gc.Bot,_,user.sNick),true на Код local a1 = ChkGuess(Gc.Bot,_,user.sNick) return a1,true |
Артём | ||
12.4.2010, 16:45 |
От: StatPX От темы с ID: 1269 |
Вот, наша любимая библиотека luasocket это позволяет, |
evg, Saymon21 | ||
12.4.2010, 16:28 |
NoLimit 1.3 API1, API2 | Скрипт запрета определенных ограничений скорости отдачи |
Замените Код local Limit = tCurUser.iLlimit на Код local Limit = tCurUser.iLlimit or false if not Limit then return end |
Артём | ||
10.4.2010, 9:53 |
BashMySQL API2 | Цитатник рунета |
Cjay, размер скорее всего в байтах, а переподключение к базе делается так: в конец функции OnStartup дописываешь Код TmrMan.AddTimer(3600000, "ReConnect") А в самый конец скрипта вот такую функцию: Код function ReConnect() con:close() con = assert (env:connect(sNameDB, sUserDB, sPasswordDB, sAdressDB, sPortDB)) end |
Parad0x | ||
9.4.2010, 8:45 |
Support API2 | Комната техподдержки |
Это комната технической поддержки, тут пароля для входа нет и, я думаю, никогда не будет, тебе надо воспользоваться каким-нибудь другим скриптом, к примеру этим, но с такой функцией пароля я лично скрипта не видел. |
van21 | ||
6.4.2010, 12:51 |
Плагин экзекутора Poddelki.FakeList как отдельный скрипт |
Замени chatdata на data |
Saymon21, demondroid | ||
4.4.2010, 22:19 |
CountryStats API2 | Статистика местоположения пользователей по странам |
Да ничего, привет тебе тоже огромный, рады видеть! Да, база загружается хабом, на сколько я помню, так что перегружать хаб просто необходимо, к твоему сожалению... |
Ksan | ||
4.4.2010, 21:48 |
Плагин экзекутора Poddelki.FakeList как отдельный скрипт |
Попробуй |
Saymon21 | ||
2.4.2010, 9:16 |
Registration_1_.v2 API1, API2 | Скрипт регистрации |
Если у тебя запущен хаб при этом - проблем быть не должно, проверь это... |
Milena | ||
1.4.2010, 19:50 |
Помогите пожалуйста со скриптом |
Скрипты отличались только папками... Но да ладно, вот переделанный. Папка \scripts\MOTDbot должна существовать! |
Ольга | ||
1.4.2010, 18:43 |
Помогите пожалуйста со скриптом |
В вашем случае будет достаточно удалить сохранение при входе каждого юзера + заменить функцию сохранения на более оптимальную, держите. Если по-прежнему будет тормозить - пишите. |
Ольга | ||
31.3.2010, 11:41 |
Домены Для Вашего Хаба Как думаете? |
Saymon, добавил на тот же айпи (что и у cheb-p2p.mydc.ru) домен magnet.hub.mydc.ru, старый удалил. |
Saymon21 | ||
26.3.2010, 10:13 |
PtokaX не сохраняются баны сервис/консоль |
Вот такой мегаскрипт будет сохранять баны каждую минуту: Код iSeconds = 60*1 function OnStartup() TmrMan.AddTimer(iSeconds*1000, "Save") end function Save() BanMan.Save() end |
Enyby | ||
25.3.2010, 12:08 |
Вопросы по скриптам Мелкие вопросы |
1. Да, дело в этой строке Код if tUser.sNick~=sAdminNick then замени ее наКод if not Core.GetUserValue(tUser, 11) then 2. По поводу этого скрипта могу лишь сказать что это скрипт создающий меню в соответствии с правами пользователя, а уже ранговая система это совсем другая область. Так что либо писать скрипт чтобы опы не могли применять команды друг на друга, либо же поговорить с этими раздолбаями и сказать что так делать нельзя. |
DrakonSP | ||
25.3.2010, 12:00 |
Помогите с Talkingbot |
Добавь проверку на команду в сообщении, перед Код for key in pairs(trigs) do добавьКод if mess:find("^%s*(%p)") then return end |
CraZy | ||
25.3.2010, 11:35 |
Kinozal_tv API2 | Скрипт новостей с трекера |
Вполне ожидаемо, пока оно закачает эти 25 мегабайт уйдет вечность, есть у меня задумка сделать отдельную маленькую софтину на luaaio которая будет по запросу как раз и работать с интернетом, в виде отдельной программы которая работает отдельно от хаба. Как вам такая задумка? |
ramzes | ||
23.3.2010, 16:39 |
Kinozal_tv API2 | Скрипт новостей с трекера |
Скрипт конечно по логике туповат т.к. не кеширует запросы юзеров. Я переделал в своем видении немного скрипт, убрал пережитки прошлого апи, и теперь он хранит кеш запроса, за это отвечает настройка Код iExpired = 30 -- время в минутах на хранение в кеше ответа от сервера Попробуйте его, уверен что останетесь довольны |
serrrios, Greeck, ramzes | ||
22.3.2010, 10:05 |
Переделка скрипта. Help. |
В том скрипте что я приложил такой фразы вообще нет, скачай заново и убедись что ты заменил скрипт и выключил старый. Айпи админа задается в настройке: Код local sAdminIp = "127.0.0.1" В том скрипте что выше отсылать когда админ онлайн нельзя, к этому сообщению прикладываю скрипт без такой проверки. У меня все работает:Цитата <HUBABOT> *** Сообщение успешно отправлено! Сообщения сам под себя переделай в скрипте...Адресат получит его при следующем входе на хаб. |
dinamit | ||
22.3.2010, 9:53 |
Скрипт, скрывающий ник в чате |
Код tNicks = { ["bot1"] = true, ["nick2"] = true, } function ChatArrival(tUser, sData) if tNicks[tUser.sNick] then local sMsg = sData:match "^%b<>%s(.*)|$" Core.SendToAll(sMsg) return true end end Но возможно что мультичат уйдет в бесконечный цикл повторения своих же сообщений, чтобы этого не случилось надо отправлять сообщение всем на хабе за исключением тех ников что вписаны в таблицу, но для этого надо пробегаться по всей таблице пользователей каждый раз, что на больших хабах будет жутко тормозить. Попробуй пока так... |
SAG | ||
21.3.2010, 16:58 |
Нужен скрипт |
Ну как что делать? Открываешь скрипт, там видишь адрес откуда берутся новорсти, теперь надо вписать адрес тех новостей что тебе интересны, к примеру: Код http://www.sovsport.ru/sport_rss/2 Теперь переделываем скрипт чтобы было так: Код -- Set your feed's URL и... получаем в чат полностью все новости. С остальными настройками надеюсь разберешься.local Feed = "http://www.sovsport.ru/sport_rss/2" |
jumshut | ||
21.3.2010, 14:56 |
Помогите ! как это убрать ??? |
Код Core.SendToNick(user.sNick,"<"..tSettings.sBot.."> Добро пожаловать на "..(SetMan.GetString(0) or "Неизвестный хаб").." !"); tCommands["lifetime"].fFunction(user) замени на Код tCommands["lifetime"].fFunction(user) Мог бы и сам хоть раз залезть в код скрипта и глянуть где похожий текст или еще что, учти, терпение тут у всех не железное. |
Kocha | ||
20.3.2010, 20:21 |
CheckPreFix API2 | контролирует приставку перед ником |
Попробовал сделать то что ты хотел... |
FallenAngel, Drakula | ||
20.3.2010, 19:51 |
Добавить функцию Апи2 |
Держи, таблица с никами в самом начале скрипта: Код tWeSendNicks = { "nick1", "Nickolya", } |
FallenAngel, Pro009, мамин_парень | ||
19.3.2010, 14:50 |
BanMe API1, API2 |
Значит птокой не предусмотрены такие баны, в справке так: Код BanMan.TempBan(tUser, nTime, sReason, sBy, bFull) - Temp ban user IP and Nick. nTime is in minutes (0 = default tempban time from settings) ! Return nil when failed, true if success. т.е. минуты и все, речи о секундах не идет.Чтобы юзера кикало замени Код BanMan.TempBan(tUser, iTime, sReason, sBy, bFull) наКод Core.Disconnect(tUser) |
foXDEvil | ||
18.3.2010, 16:57 |
Помогите ! Есть ли такой скрипт ? |
Тебе в этот раздел, а точнее я бы сказал сюда. |
Kocha | ||
18.3.2010, 13:30 |
скрипт регестриции для Dr_Pilulkin™ |
Я скачал - поставил, регистрирует и правда без вопросов и прочего. Ищите проблему в себе, скрипт выполняет то что вы хотите. А копаться в его содержимом не надо, он ПРИВЕДЕН В БИНАРНЫЙ ВИД, настройки очень тонко правятся в ФАЙЛАХ НАСТРОЙКИ. И поставь notepad++, он хорошо все редактирует, дримвейвер все-таки не для этого сделан. |
Dr_Pilulkin™ | ||
18.3.2010, 10:31 |
Hub 3000 Online 100% Загрузки |
А на сетевуху ты не хочешь погрешить, к примеру? Если она встроенная или не очень хорошая, может старая, то попробуй заменить на новую нормального качества... И ХР совсем не серверная ОС, может попробовать вин сервер? |
Unians | ||
17.3.2010, 22:29 |
Домены Для Вашего Хаба Как думаете? |
TROJAN, готово |
random name | ||
17.3.2010, 19:32 |
Официальная страничка RusHUB Внимание - вопрос |
Господа, вы слегка не о том разговариваете, код всегда можно убрать в файл или достать оттуда, нам нужно немного другое, так что давайте не будем, хорошо? По моему мнению, статичные скрипты которые не изменяются в ходе работы надо убирать в файл ввиду того что они при следующем открытии страницы берутся браузером из кеша, что облегчает и страницу и работу веб-сервера. |
bot9ra | ||
17.3.2010, 16:45 |
Ipgag V.3.01 API1 | навороченная заглушка юзеров |
Это уже красивости... 1 значит 1, это минуты, в цифрах нули не пишутся в начале, вы ко всему будете придираться? Попробуй заменить Код tRESULT = ""..Hours..":"..Minutes..", "..Days.." "..Months.." 2"..string.rep("0",3-string.len(Years))..""..Years.." года" наКод tRESULT = ""..Hours..":"..(Minutes:len() ~= 1 and Minutes or "0"..Minutes)..", "..Days.." "..Months.." 2"..string.rep("0",3-string.len(Years))..""..Years.." года" |
Kocha | ||
17.3.2010, 11:22 |
Hub 3000 Online 100% Загрузки |
Нет хуже засранного компа, на нем любой софт работает плохо, а домашний компьютер по определению является загаженым. Надо методом проб и ошибок выявить в чем проблема - может у тебя в винде стоит фаервол что блокирует все, может заражен вирусами, да много чего может быть, точно без диагностики тебе ничего не скажут. Я бы посоветовал попробовать поставить на другой раздел виндоус и запустить на нем только необходимое ПО - драйверы, фаервол и хаб + отключить все ненужные компоненты винды и посмотреть как будет вести себя унхаб. |
Unians | ||
14.3.2010, 23:33 |
Support API2 | Комната техподдержки |
Так допиши после Код SendToRoom(bot,user.sNick.." вошёл в комнату") вот такой код:Код Core.SendPmToUser(user, bot, "Для того что бы добавить хаб в избранное наберите в чат то то, регистрация находится там то, ну и тд") |
Exodus | ||
14.3.2010, 20:50 |
Курсы Валют Цб API2 | Скрипт-информатор. 18 валют на выбор. |
Чтобы убрать сообщение "Данные устарели, запрашиваю сервер..." удали строку Код Core.SendToUser(user, "<"..sBotName.."> Данные устарели, запрашиваю сервер...") А чтобы выводить данные в приват замени Код Core.SendToUser(user, "<"..sBotName.."> \n"..sMsg) наКод Core.SendPmToUser(user, sBotName, "\n"..sMsg) |
AfLc | ||
14.3.2010, 18:49 |
Временные Операторы API2 | Модерирование по графику |
Немного переделал скрипт, попробуй. Он мог не срабатывать из-за торможения компа или странной работы хаба со временем, сейчас должен работать как было задумано. |
Артём, rival, iimedia | ||
14.3.2010, 17:13 |
Курсы Валют Цб API2 | Скрипт-информатор. 18 валют на выбор. |
Решение проблемы с ошибкой: 1. Заменить два раза Код while string.find(fd,"<Value>") do на Код while string.find(fd,"<Valute ID=\".-\">") do 2. Заменить Код sMsg=sMsg..val[i].CharCode.."\t"..val[i].Nominal.." "..val[i].Name..string.rep("\t",math.floor((MaxLen-string.len(val[i].Name)-string.len(val[i].Nominal)+1)/8+1))..val[i].Value.."\t"..((val[i].Diff<0) and "" or "+")..val[i].Diff.."\n" наif sMidChar~="" and x<table.getn(Currency) then sMsg = sMsg..string.rep(sMidChar,iMidChar).."\n" end Код if val[i] then sMsg=sMsg..val[i].CharCode.."\t"..val[i].Nominal.." "..val[i].Name..string.rep("\t",math.floor((MaxLen-string.len(val[i].Name)-string.len(val[i].Nominal)+1)/8+1))..val[i].Value.."\t"..((val[i].Diff<0) and "" or "+")..val[i].Diff.."\n" if sMidChar~="" and x<table.getn(Currency) then sMsg = sMsg..string.rep(sMidChar,iMidChar).."\n" end end |
Invisible, Ksandor, Kar@bas, AfLc | ||
14.3.2010, 16:23 |
Regme API1, API2 | Скрипт регистрации |
Попробуй править файлы в notepad++, это хороший редактор, в котором все правится как надо. Файл с измененными настройками что ты делал прикладываю, ошибок у меня не выдает... |
Streter | ||
14.3.2010, 16:16 |
Ipgag V.3.01 API1 | навороченная заглушка юзеров |
На своем же компьютере стоит хаб? Если нет - могут быть различия во времени сервера и твоего клиента (винды), я проверил, все работает как надо: Цитата [16:12:43] <PtokaX> Вы были заглушены по IP до 16:21, 14 Марта 2010 года на приват и общий чат. Причина: "тест ( by Nickolya )" Еще возможно ты пишешь 8m, а это гаг на 1 месяц и меняется только месяц, а время сохраняется, что правильно, а 8 минут будет как 8M, проверь все еще раз, в английском ли варианте ты вводишь время и напиши сюда что ты вписываешь во все поля. |
Kocha | ||
13.3.2010, 21:58 |
chat detector |
Во-первых скрипт надо было сюда прикрепить, так удобней, это сделаю я: CODE sBot = " † X-Files™ Paranormal Reality † " RankFile = "RankingScript\\ranksusers.tbl" iNumb = 3000 Main = function() dofile(RankFile) end ChatArrival = function(user, data) local data = string.sub(data,1,-2) local s,e,prefix =string.find(data, "%b<>%s+(%S+)") if prefix == "!merecord" then if tRankingTable[user.sName] then if tRankingTable[user.sName] > iNumb then user:SendPM(sBot, " \r\n\ ..-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°*•-.,_,.-•*°`*•-.,_,.-•*°°*•-.,_,.-•*°*•-.. \r\n\ \r\n\ "..user.sName.." \r\n\ Вы написали в чате "..tRankingTable[user.sName].." сообщений. \r\n\ Это превосходит нужное число в "..(iNumb-tRankingTable[user.sName]).." сообщений, поздравляем! \r\n\ Теперь, если вы хотите, вы можете добавить к своему нику ''Погоны'' \r\n\ К Примеру ваш ник <Коля> а в чате он будет выглядеть как < *** <Коля> *** > \r\n\ Вы сами выбираете что себе поставить! \r\n\ \r\n\ Небольшие правила. \r\n\ \r\n\ 1. Ваш ник должен быть не длиннее 10 символов. \r\n\ 2. ''Погоны'' не должны быть суммарно длиннее 10 символов. \r\n\ 3. Ваш ник должен быть без [Префикса]. \r\n\ 4. Суммарно измененный ник может быть не длиннее 25 символов. \r\n\ 5. Если вы придумали как будет выглядеть ваш ник пишите мне < » » »^† Fox Malder †^« « « > \r\n\ \r\n\ Администрация хаба. \r\n\ ") else user:SendPM(sBot, " \r\n\ ..-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°*•-.,_,.-•*°`*•-.,_,.-•*°°*•-.,_,.-•*°*•-.. \r\n\ \r\n\ "..user.sName.." \r\n\ \r\n\ Вы наговорили всего "..tRankingTable[user.sName].." сообщений. \r\n\ До нужного числа вам не хватает "..(iNumb-tRankingTable[user.sName]).." сообщений. \r\n\ Удачи! \r\n\ Администрация хаба. \r\n\ ") end else user:SendData("<"..sBot.."> Учёт ваших сообщений не найден.") end return 1 end end А переделанный под 2 апи и работу с бд скрипт в прикреплении. |
*FoxMalder* | ||
13.3.2010, 17:52 |
Скрипт для шары |
Раскрывающийся текст Простите за флуд конечно, давайте еще научим скрипты варить кофе и стирать рубашки, как вам идея? Чем тебя не устраивает включенный клиент? Если держать его чисто для шары, как бота, то можно оставить 1 хаб и необходимую шару. А через любой другой клиент уже сидеть на хабах и скачивать файлы... |
Wariner | ||
11.3.2010, 20:48 |
Скрипт меню администрации Менюшка админов для отдельной группы (API2) |
Как что делать? Настроить эту таблицу под свои профили. Если не можешь сам - пиши в каком порядке они у тебя в хабе и кому нужен доступ. Извиняюсь, я еще накосячил, перезалил исправленный скрипт в пост выше. |
RoL | ||
11.3.2010, 12:06 |
Вопросы по RusHub Технические вопросы |
Итак, прикладываю скрипт который создаст базу для РусХаба, если таковая уже имеется, то кладем ее рядом со скриптом, который надо положить в папку scripts птоки, запускаем скрипт и если файл с регистрациями лежит, то он перезапишется, при этом совпадающие регистрации не будут перезаписаны. В случае если вы не положили базу с регистрациями, создастся новая, пригодная для скрипта FirstRusHubBot под РусХаб. |
Accelerator, Saymon21 | ||
10.3.2010, 23:19 |
Подскажите как посадить птоху на хост |
Лучше поищи в интернете статьи о покупке доменов, там должно быть написано, и почитай еще обязательно А птока по-моему сидит на всех сетевых интерфейсах, лучше ее не "переконфигурировать", в поле адрес в самом хабе сделать 0.0.0.0 и не париться. А домен просто возвращает айпи после запроса на сервер DNS. Надеюсь доступно объяснил, что будет не понятно - спрашивай. |
Wan | ||
10.3.2010, 12:31 |
Официальная страничка RusHUB Внимание - вопрос |
bot9ra | |||
9.3.2010, 14:13 |
Официальная страничка RusHUB Внимание - вопрос |
Шаблона пока нет, это лишь наработки Как будет достойный логотип и шаблон - все выложим. Хочу предложить вот такой шаблон. Для Артема и всех нелюбителей "цветочков" сделаю кнопку чтобы эти "цветочки" убирались. Оцените... |
Артём, bot9ra | ||
9.3.2010, 13:53 |
Trivia Mod API2 | Игра "Викторина" |
Сорри, перезалил еще раз, теперь точно новый вариант. |
steppnov | ||
9.3.2010, 12:10 |
Trivia Mod API2 | Игра "Викторина" |
Добавь вот такой скрипт, только не забудь настроить как надо. Банально, но тебе думаю подойдет |
steppnov | ||
9.3.2010, 11:38 |
ChatGuard ChatGuard v1.2 API 2 Nickolya s fix |
Используй скрипт из этой темы. |
Invisible | ||
9.3.2010, 11:30 |
Редирект для диапазона |
Код Core.Redirect(sAddress, sMsg) замени на Код Core.Redirect(tUser, sAddress, sMsg) и вообще скрипт должен был выдавать ошибку о которой стоило написать сюда. |
truth | ||
7.3.2010, 11:43 |
Домены Для Вашего Хаба Как думаете? |
Нет, luxemat, для этого айпи нельзя. Почему же?! По причине того что домен завязывается на айпи, по айпи может находтиться не только хаб, но и веб-сайт, а твой сайт мое сайтолюбие не одобряет. И вообще, люди, которые занимаются подобным "Заработком в интернете" мне не очень приятны... Делай выводы |
Wan | ||
6.3.2010, 14:11 |
Trivia Mod API2 | Игра "Викторина" |
Не воспринимает ответы регистра отличного от того что в файле В конец скрипта добавляй функцию Код string.String2Lower = function(s) for i = 192, 223 do s = s:gsub(_G.string.char(i), _G.string.char(i + 32)) end s = s:gsub(_G.string.char(168), _G.string.char(184)) return s:lower() end И в скрипте замени все Код string.lower на Код string.String2Lower |
Kingston, dj hoodo | ||
3.3.2010, 11:46 |
Скрипт запрета в никах заглавных букв |
Блин, вам все разжевывать надо как детям? Я переделал этот скрипт под одного человека из антикапса за 3 минуты, а вы придераетесь к комментариям... Займитесь чем-нибудь пополезнее лучше. |
Wariner, Артём | ||
2.3.2010, 15:31 |
WebServer скрипт создающий веб-интерфейс для хаба |
Выложил в 1 пост "новую" версию, постарался все по-быстрому описать, если что непонятно будет - спрашивайте. |
Setuper, Saymon21 | ||
1.3.2010, 17:10 |
Trivia Mod API2 | Игра "Викторина" |
В моем посте 3 блока кода. Первый для примера, его трогать не надо! Второй блок - функция полностью, которую и надо польностью заменить в основном файле скрипта. Третий же блок показывает изменения в функции по отношении к ее старому варианту. Если все сделать правильно ошибок быть не должно. И читайте внимательней что написано, пожалуйста |
RomanGTe | ||
1.3.2010, 16:38 |
Trivia Mod API2 | Игра "Викторина" |
По аналогии с Код [TrivUserStart] = function(curUser) добавляем в ParseData некоторый код и получаем вот такую функцию, ее надо польностью заменить в скрипте:if tConf.allowuserstart == 1 then if Started then SendMsgToUser(curUser,"Ошибка: Викторина уже запущена.") else UserAutostop = tCfg.UserAutostop TriviaStart() SendMsgToPlayers("Игра Викторина была запущена! Запустил: "..curUser.sNick..". Игра будет автоматически остановлена, если на "..UserAutostop.." вопросов подряд не будет дан правильный ответ.") end else SendMsgToUser(curUser,"Извините, у Вас нет доступа к этой команде.") end end Код function ParseData(curUser,data) тут кусокdata = string.sub(data,1,string.len(data)-1) local _,_,sdata = string.find( data, "^%b<>%s(.*)$") local _,_,pre,cmd = string.find( data, "^%b<>%s*(%p)(%S+)") if (pre and cmd) and pre == CPrefix then cmd = string.lower(cmd) if tProfiles[curUser.iProfile] == 1 and tFuncCmd[cmd] then tFuncCmd[cmd](curUser,data) return true end if tProfilesConfig[curUser.iProfile] == 1 and tFuncConfig[cmd] then tFuncConfig[cmd](curUser,data) return true end if tProfilesConfigPlus[curUser.iProfile] == 1 and tFuncConfigPlus[cmd] then tFuncConfigPlus[cmd](curUser,data) return true end elseif sdata then if sdata == "Викторина" or sdata == "викторина" then if tConf.allowuserstart == 1 then if Started then SendMsgToUser(curUser,"Ошибка: Викторина уже запущена.") else UserAutostop = tCfg.UserAutostop TriviaStart() SendMsgToPlayers("Игра Викторина была запущена! Запустил: "..curUser.sNick..". Игра будет автоматически остановлена, если на "..UserAutostop.." вопросов подряд не будет дан правильный ответ.") end else SendMsgToUser(curUser,"Извините, у Вас нет доступа к этой команде.") end end local corrans = nil for _,v in ipairs(TrivData.Answers) do if string.lower(sdata) == string.lower(v) then corrans = v end end if corrans and (not TrivData.GetQuestion) then TrivData.GetQuestion = true local ansTime = string.format("%.2f",(os.clock()-TrivData.Start)) -- Get Answering Time in sec. local talked = nil if string.lower(sdata) == string.lower(corrans) then talked = corrans end if talked then if tConf.mode ~= "pm" then if tCfg.maintoall then Core.SendToAll("<"..curUser.sNick.."> "..corrans) else SendMsgToPlayers(corrans,curUser) end end local tmpstring = "" if (tCfg.showcorrectanswer == 1) then tmpstring = " Время: "..ansTime.." секунд(ы)." end SendMsgToPlayers("На этот вопрос правильно ответил: "..curUser.sNick..", Ответ был: \""..corrans.."\". Очки: "..TrivData.Points.."."..tmpstring) if _Scores[curUser.sNick] then _Scores[curUser.sNick].Score = _Scores[curUser.sNick].Score + TrivData.Points _Scores[curUser.sNick].AvTime[1] = _Scores[curUser.sNick].AvTime[1] + ansTime _Scores[curUser.sNick].AvTime[2] = _Scores[curUser.sNick].AvTime[2] + 1 _Scores[curUser.sNick].AvTime[3] = tonumber(string.format("%.2f",_Scores[curUser.sNick].AvTime[1]/_Scores[curUser.sNick].AvTime[2])) else _Scores[curUser.sNick] = {} _Scores[curUser.sNick].Score = TrivData.Points _Scores[curUser.sNick].Streak = 1 _Scores[curUser.sNick].AvTime = { tonumber(ansTime),1,tonumber(ansTime) } end if (tCfg.showcorrectanswer == 1) then SendMsgToPlayers(curUser.sNick..": Всего очков: ".._Scores[curUser.sNick].Score..", Правильных ответов: ".._Scores[curUser.sNick].AvTime[2]..", Среднее время на ответ: "..string.format("%.2f",_Scores[curUser.sNick].AvTime[3]).." секунд(ы).") end if TrivData.Availans > 1 then ShowAnswer() end UpdateStreak(curUser) if not CheckAutostop() then ResetMainTimer() end return true end end end end Код if sdata == "Викторина" or sdata == "викторина" then отвечает за команду в чате, меняйте сами как хотитеif tConf.allowuserstart == 1 then if Started then SendMsgToUser(curUser,"Ошибка: Викторина уже запущена.") else UserAutostop = tCfg.UserAutostop TriviaStart() SendMsgToPlayers("Игра Викторина была запущена! Запустил: "..curUser.sNick..". Игра будет автоматически остановлена, если на "..UserAutostop.." вопросов подряд не будет дан правильный ответ.") end else SendMsgToUser(curUser,"Извините, у Вас нет доступа к этой команде.") end end |
RomanGTe, TiGRpp | ||
1.3.2010, 12:57 |
WebModule RusHub | Модуль для встроенного web-сервера |
Для картинки отправляется заголовок Content-Type: тут_тип_данных Для JPGи к примеру будет Цитата Content-Type: image/jpg А вообще ответ сервера выглядит примерно так (это наш форум такое отправляет тело страницы я написал сам для наглядности):Код HTTP/1.1 200 OK Server: nginx/0.5.33 Date: Mon, 01 Mar 2010 09:56:00 GMT Content-Type: text/html; charset=windows-1251 Transfer-Encoding: chunked Connection: keep-alive Keep-Alive: timeout=20 X-Powered-By: PHP/5.2.4-2ubuntu5 Set-Cookie: session_id=0fffb2dabc4079d55874a47231ea0ee2; path=/; httponly <html> <head> </head> <body> </body> </html> |
Setuper | ||
27.2.2010, 14:07 |
Ptokax Как Системная Служба. Фоновая работа PtokaX |
Дублирую инфу с ссылки выше для Вашего удобства: Цитата У вас когда-нибудь возникало желание запустить приложение как системную службу? Думаю, что да, учитывая, что в некоторые программы такая возможность встроена по-умолчанию. А знаете ли вы, что приложение запущенное как служба, работает гораздо быстрее и занимает меньше места в памяти? В этой статье мы рассмотрим небольшую утилиту Any Service (приложена к этому посту в архиве), которая в два щелчка мышки, поможет запустить любое приложение как системную службу. Any Service является оболочкой двух стандартных утилит srvinstw и instsrv из комплекта Windows 2000 Server и для ее нормальной работы вам будут необходимы права Администратора. Программа полностью бесплатна, занимает всего 49Кб и не требует установки. Интерфейс интуитивно понятен и снабжен детальными пояснениями в виде всплывающих подсказок. Главное окно программы позволяет произвести первичные настройки вашей будущей службы: [attachment=4134:anyservice1.gif] В первом поле вводим полный путь к исполнительному файлу приложения, которое будет запускаться как служба. В графе "Имя службы" указываем, как будет называться наша служба. В "Описание службы" - любое понятное вам описание нового сервиса. Далее можно проставить нужные галочки:
Известные проблемы: перед первым запуском, желательно отключить антивирусную программу иначе дальнейшая работа программы будет невозможна, т.к. при первом запуске, она ищет обе утилиты (srvinstw и instsrv) в папке %WINDIR%\System32\ и если не находит, копирует их из собственного ресурса. |
Tsd | ||
26.2.2010, 11:19 |
NoLimit 1.3 API1, API2 | Скрипт запрета определенных ограничений скорости отдачи |
Лимит узнается только тогда когда юзер отправит строку майинфо, в принципе все будет так как вы хотите если заменить Код if tCurUser.bConnected then наCheckLimit(tCurUser) end Код CheckLimit(tCurUser) |
thehawk | ||
26.2.2010, 11:01 |
Функции Для Разработчиков склад полезных функций |
В библиотеке LuaSocket есть модуль URL в котором есть функция заменяющая URICoding: Цитата url.escape(content) Applies the URL escaping content coding to a string Each byte is encoded as a percent character followed by the two byte hexadecimal representation of its integer value. Content is the string to be encoded. The function returns the encoded string. Код -- load url module url = require("socket.url") code = url.escape("/#?;") -- code = "%2f%23%3f%3b" Аналогично можно перевести из полученной строки в обычный текст, надо перекодировать из утф, заменить + на пробел и применить к строке функцию url.unescape |
Setuper, Serx, Kingston, MIKHAIL | ||
23.2.2010, 16:30 |
Скрипт запрета в никах заглавных букв |
Спасибо, мой косяк, поправил в посте выше, теперь работает? |
thehawk | ||
23.2.2010, 15:50 |
Скрипт запрета в никах заглавных букв |
Код -- Размер сообщения с которого начинает реагировать скрипт: iCheckSize = 5 -- Процент капса, при котором сработает скрипт: iPersents = 60 ValidateNickArrival=function(sUser,sData) if isYELL(sUser.sNick) then Core.SendToUser(sUser, "*** Ваш ник не должен быть в КАПСовом виде!") Core.Disconnect(sUser) end end isYELL=function (sData) local flag=false local nsp = sData:gsub ("[%s%p%c]", "") if nsp:len() > iCheckSize then local NoSpacesLen = nsp:len() local NoCAPSLen = (nsp:gsub("[%uА-ЯЁ]", "")):len() if (NoSpacesLen - NoCAPSLen)/NoSpacesLen * 100 > iPersents then flag=true end end return flag end По-быстрому сделал, не проверял. |
thehawk | ||
21.2.2010, 21:08 |
TopicTemp API2 | Температура воздуха в топике хаба |
Бывает скрипт отключается после ошибки в этой строке: Код if not tTemp[tCity[tData.City]] or tTemp[tCity[tData.City]][2]+tCfg.Update*60 < os.time() then Для того чтобы убрать ошибку мы меняем строку на Код if not tTemp[tCity[tData.City]] or not tTemp[tCity[tData.City]][2] or tTemp[tCity[tData.City]][2]+tCfg.Update*60 < os.time() then Плюсом я бы еще советовал приписать после Код http = require("socket.http") вот такую строку:Код http.TIMEOUT = 10 где 10 - таймаут на получение страницы в секундах, у кого хорошее соединение, те могут занижать эту цифру, при плохом соединении мы наоборот увеличиваем таймаут. Без этой приписки таймаут стандартный - 60 секунд. |
Dr_Pilulkin™ | ||
21.2.2010, 17:05 |
замена стандартной команде !stat |
Этот Франкенштейн вполне себе неплохо собран Убили комментарии в самом конце скрипта Вот здесь Код function UserConnected(user) вторая строка лишняя т.к. несет только лишнюю нагрузку...Core.GetUserAllData(user) И еще мне показалось что слишком много конкатенаций.. Подумай как это можно исправить, на заметку тебе метод здешних мастеров: string.format Плюсом функции берущие аптайм надо внести в реакцию на команду, мне кажется работает оно у тебя не сильно правильно. |
Saymon21 | ||
21.2.2010, 13:31 |
Hub's Big Ass Bot API2 | HUBBABOT v.2.28 |
Попробуйте заменить код Код function ConnectToMeArrival(sUser,sData) на Core.GetUserAllData(sUser) local _,_,towho = string.find(sData, "%p%S+%s+(%S+)%s+.*|") Код function ConnectToMeArrival(sUser,sData) Core.GetUserAllData(sUser) local _,_,towho = string.find(sData, "^%p%S+%s+(%S+).*|$") Это 848 строка в файле hubbabot2.lua |
mastersweet | ||
21.2.2010, 13:13 |
WebServer скрипт создающий веб-интерфейс для хаба |
И по-идее запрос заканчивается пустой строкой, по которой можно судить об окончании запроса. Попробуй этот метод, я думаю так все и происходит. Т.е. фактически запрос полностью вот такой: Цитата GET / HTTP/1.1\r\n Host: www.example.com\r\n User-Agent: MyLonelyBrowser/5.0\r\n Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n (пустая строка) Луа событие конечно лучше всего по окончанию всего запроса. |
Setuper | ||
21.2.2010, 12:49 |
WebServer скрипт создающий веб-интерфейс для хаба |
Замечательно! Конечно поможем, благодаря тому творению что ты видишь выше, я немного изучил работу веб-сервера. Рассказываю. Неразрываемое соединение в принципе, как мне кажется, немного ускоряет работу клиента т.к. он прогоняет несколько запросов через 1 поток соединения, но повышается нагрузка на сам сервер т.к. ему приходится держать соединение пользователя. Так что для начала не советую заморачиваться и сделать закрывающий после каждого запроса соединение сервер. Это осуществляется отсылкой заголовка Цитата Connection: close и закрытем соединение сразу после передачи всех данных. Потом если будет желание доработаешь сервер со всяким изюмом По поводу определения команд протокола не стоит особо заморачиваться. В самом начале клиент посылает запрос состоящий из заголовков + еще может быть дополнительное тело сообщения, в котором передаются POST данные. Все заголовки начинаются с новой строки с переносом \r\n к примеру ( Код GET / HTTP/1.1 И по-идее запрос заканчивается пустой строкой, по которой можно судить об окончании запроса. Конечно для защиты надо сделать определенное ограничение для получения заголовков. При наличии POST-данных, мы получаем от клиента ровно столько байт, сколько указано в заголовке Host: www.example.com User-Agent: MyLonelyBrowser/5.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Цитата Content-Length: 1024 это число конечно тоже надо ограничивать дабы избежать перегрузок сервера, POST-данные идут через пустую строку от заголовков (Цитата POST Host: www.site.ru\r\n Referer: Cookie: income=1\r\n Content-Type: application/x-www-form-urlencoded\r\n Content-Length: 35\r\n \r\n login=Petya%20Vasechkin&password=qq Если что непонятно - спрашивай, буду очень сильно рад помочь. Спасибо за разработки! |
Setuper | ||
17.2.2010, 22:01 |
Chase_cmd API2 | Показывает команды используемые юзерами |
Это уже моя вольность, простите, привычка. Чтобы сделать только + замени следующее Код local sCmd = sData:match"^%b<>%s+%p(%S+)" наКод local sCmd = sData:match"^%b<>%s+%+(%S+)" |
DrakonSP | ||
17.2.2010, 16:12 |
Ваши Вопросы И Предложения По Поводу Форума |
Попробовал вылечить баг с символами в начале и конце кода html в форуме, вроде как оно появляется из-за работы совместно с nginx при отправке апачем заголовка 200 OK, который являлся излишним. Сейчас посмотрите пожалуйста, если у кого вновь всплывет баг - отписывайтесь. Баг заключается в том что в браузерах кроме ие в самом начале страницы выводится 4 символа и цифра 0 в самом конце страницы. Так же подобное возможно при использовании аяксовой части форума. |
Setuper | ||
16.2.2010, 23:03 |
Запрет символов в никах и цифровых ников Запрет символов в никах и цифровых ников |
DrakonSP | |||
16.2.2010, 22:58 |
Chase_cmd API2 | Показывает команды используемые юзерами |
Вот, слепил из того что выше. |
DrakonSP, OVERLORD1979, Saymon21, TiGRpp | ||
16.2.2010, 22:20 |
Запрет символов в никах и цифровых ников Запрет символов в никах и цифровых ников |
Условие and означает что в нике должны быть оба символа для его истинности. По-идее если надо проверить наличие одного из символов будет вернее использовать именно Код tUser.sNick:find"([%!@])" |
DrakonSP | ||
9.2.2010, 12:54 |
меню |
1. Спецсимволы в регулярках надо экранировать: Код local sCmd = sData:match"^%b<>%s+[!+-/*](%S+)" потом действиеКод local sData = sData:sub(1,-2) немного лишнее если все учесть в регулярке, а вообще надо бы написать проще:Код function ChatArrival(tUser, sData) local sCmd = sData:match"^%b<>%s+%p(%S+).*|" if sCmd == "usermenu" then Мое замечание о команде удаления меню было проигнорировано, а зря На сколько я помню это команда Код $UserCommand 255 15 Единственное, это снесет все меню, но на озерках это грамотно учтено т.к. меню не разбросано по скриптам а все в 1 боте Можно попробовать указать меню как аргумент, но не знаю получится ли, протестируйте, потом отпишите как, к примеру Код $UserCommand 255 15 Информация для "..tUser.sNick.."\\$|" илиКод $UserCommand 255 15 Информация для "..tUser.sNick.."$|" |
Wariner, FallenAngel, Saymon21, TiGRpp | ||
8.2.2010, 0:25 |
Кик с умножением времени 5м*10м*20м*40м... |
Добавил работу с $Kick, однако в этом случае невозможно узнать причину бана т.к. она идет отдельно в сообщении в чат. Попробуйте |
X-Sky | ||
7.2.2010, 23:34 |
Прогноз погоды на pogoda.cheb.ru перевести на API2 |
Немного переделал, а то этот конвертер все коверкает, специфика библиотеки сокетов учтена, сейчас скрипт должен работать еще лучше и стабильней, пробуй. Для работы нужна библиотека сокетов. |
ZZZZZ | ||
7.2.2010, 22:39 |
Кик с умножением времени 5м*10м*20м*40м... |
Как попросили, - так и сделал, что первое пришло в голову, т.е. как я понял задумку. Если надо переделать - позже сделаем. Все упирается в тех кому нужен скрипт... |
X-Sky | ||
7.2.2010, 17:36 |
Кик с умножением времени 5м*10м*20м*40м... |
Сделал, тестируем и выкладываем в готовые если все ок. Вот настройки скрипта: Раскрывающийся текст Код iKickKoef = 2 -- коэффициент для кика, на это число умножается время бана каждый раз iWeBeginBanTime = 5 -- время для умножения на коэффициент sBot = "" -- бот скрипта, если указать "", то возьмется бот хаба -- таблица тем кому будут доступны команды скрипта и кого нельзя будет банить этими командами: tAccessProfiles = { [0] = true, [1] = true, [2] = true, [3] = false, [-1] = false, } sFile = "dkick.tbl" -- файл для сохранения sKickCmd = "dkick" -- команда кика sClearKickCmd = "cleardkick" -- команда обнуления коэффициента для ника sClearAllKicksCmd = "clearalldkick" -- команда обнуления коэффициента для всех sShowKickCmd = "showdkicks" -- команда показа коэффициента для ника sShowAllKickCmd = "showalldkicks" -- команда показа коэффициента для всех |
Saymon21, X-Sky | ||
7.2.2010, 15:46 |
Сохранение из таблицы в хтмл файл |
Если в файле таблица tHub, то добавляем просто сохранение после загрузки: Код local sFile = Core.GetPtokaXPath().."scripts/файл.txt" Вызов фунции LoadData() загрузит данные из файла и сохранит в шаблон html.function LoadData() if loadfile(sFile) then dofile(sFile) end SaveToHtml() end LoadData() |
intlive | ||
5.2.2010, 13:29 |
Help |
Тут все не так сложно, главное понимать что ты делаешь и как сделать поумнее и похитрее. Ищешь ты кнопки как на магнитофоне, при нажатии на красный круг начинается запись всех твоих дейстий, так вот к примеру нам надо добавить в конец всех наших строк вот такие символы: "}, Для этого мы выставляем курсор в первую запись без этого сочетания на нужное положение, т.е. в конец, жмем красный кружок, запись пошла... Теперь мы вписываем наше сочетание "}, Затем жмем стрелку вниз чтобы перейти на следующую строку и затем кнопку End для контроля того что курсор на конце строки, теперь останавливаем запись нажатием на черный квадрат рядом с уже не активным красным кругом, все, мы сделали запись, теперь плей (треугольник) повторит наше действие, а два треуголника сделают это указанное количество раз. Чтобы отформатировать весь документ мы запускаем многократное "проигрывание" действия "до конца" и наблюдаем результат Пробуйте... |
FallenAngel, Артём | ||
4.2.2010, 17:12 |
Help |
Код OpConnected = UserConnected это лишнее, а не работает скорее всего из-за логики блокировки:RegConnected = UserConnected Код if tAviableNicks[tUser.sNick] == 1 then Код --Ники Исключения tAviableNicks = { ["Артём"] = 0, ["ВашНик"] = 1, } у тебя сделано так: если в таблице и значение равно 1 то идет проверка, попробуй переделать на Код if tAviableNicks[tUser.sNick] and tAviableNicks[tUser.sNick] ~= 1 or not tAviableNicks[tUser.sNick] then и тогда у тех кого нет в таблице или значение не равно 1 будет идти проверка ника... |
Invisible, Артём | ||
4.2.2010, 13:00 |
Help |
Пожалуйста, в ноутпаде++ есть замечательная штука - макросы, я сделал все буквально за минуту |
Артём | ||
4.2.2010, 11:55 |
Домены Для Вашего Хаба Как думаете? |
Saymon21 | |||
30.1.2010, 20:19 |
Домен .ru для хаба |
Мне контора не понравилась, не знаю что там и как, отзывы не смотрел, просто возможны некоторые проблемы потом, купив подешевле сейчас. Скажу вам что купить можно и за 90 рублей, но что она вам сэкономленная десятка в год??? Я по-прежнему остаюсь верен |
X-Sky | ||
28.1.2010, 10:50 |
Time API2 | Показ времени в гл. чате |
Фишки никто не отменял, а нужность пусть каждый для себя определяет. Вот мне может не надо электричество, давайте перейдем в век палки-копалки? |
X-Sky | ||
28.1.2010, 10:47 |
Кик с умножением времени 5м*10м*20м*40м... |
Идея мне нравится, сделаем |
Saymon21, X-Sky | ||
27.1.2010, 14:56 |
Обсуждение первого API |
Я думаю ты прав Илюх, пора забивать на это, единственное если есть хороший скрипт, то почему бы его не перевести, правда я такие редко встречаю Мне кажется не так и много запросов перевода, а основную массу уже перевели, так что даже не знаю как быть Вообще старье не нужно однозначно! А на старых версиях хаба людей держит нежелание искать весь функционал скриптов под новый хаб, настраивать все заново и прочее, короче незнание и лень, что показывает небрежность и некомпетентность самого админа |
Wariner, thehawk | ||
27.1.2010, 14:40 |
RecordBot и TopHubbers |
1. Надо писать в теме скрипта если он существует, это тебе на будущее. 2. Что если попробовать запустить это все на 0.4.1.1? 3. В обоих скриптах относительный путь к папкам, попробуй это поправить: в RecordBot заменить Код fRecord = "scripts/records.tbl", на fConfig = "scripts/config.tbl", Код fRecord = Core.GetPtokaXPath().."scripts/records.tbl", fConfig = Core.GetPtokaXPath().."scripts/config.tbl", А в Tophubbers заменить Код fOnline = "scripts\\tOnliners.tbl", наКод fOnline = Core.GetPtokaXPath().."scripts/tOnliners.tbl", и запускать скрипты только при включенном хабе! |
denis | ||
25.1.2010, 16:17 |
Предложения для развития |
Wariner, юнный падаван, оптимальней наверно будет делать как твой тезка, автор хаба. В его варианте будет вот так: Код local sBot = "Bot" local iMinLen = 3 -- минимальное количество символов local iMaxLen = 13 -- максимальное количество символов function OnValidateNick(UID) local iNickLen = Core.GetUser(UID, 1).sNick:len() if iNickLen < iMinLen then Core.SendToUser(UID, ("Ваш ник слишком короткиий! Минимальное количество символов в нике для входа на хаб составляет %d !"):format(iMinLen), sBot) Core.Disconnect(UID) elseif iNickLen > iMaxLen then Core.SendToUser(UID, ("Ваш ник слишком длинный! Максимальное количество символов в нике для входа на хаб составляет %d !"):format(iMaxLen), sBot) Core.Disconnect(UID) end end Если конкретно, то я про конструкцию вида Код sNick = Core.GetUser(UID, 1).sNick Да и ник бота будет вот таким Код sBot = Core.GetConfig("sHubBot") |
fixx | ||
24.1.2010, 20:05 |
Домены Для Вашего Хаба Как думаете? |
Saymon21 | |||
24.1.2010, 16:01 |
WebServer скрипт создающий веб-интерфейс для хаба |
Скрипт по умолчанию работает на 81 порту, и пароль и логин по умолчанию admin, меняется это все в начале самого скрипта. Otshelnik-Fm, читаем 1 пост внимательнее... Первые шаги по написанию веб-морды. Помнится кто-то говорил, что lua сокеты глючат (не знаю не проверял). Однако, возможно стоит задуматься о рациональности работы веб-сервера на lua? С одной стороны, действительно хорошо, не нужно устанавливать какой-нибудь там апач, php и тд, с другой стороны, стационарный веб сервер наверное всё же будет работать быстрее. Поэтому возникает сразу 3 мысли (которые в принципе все возможно реализовать со временем). Первая, - это данный веб-сервер на lua. Вторая, - это написание под хаб плагина веб сервера. Третья, - это установка обычного веб сервера (того же апача). При реализации всех этих вещей админ хаба сможет сам выбрать. Но это так, на будущее А пока думаю нужно ещё много сделать в этом направлении. Setuper, сокеты вполне себе работают, спасибо за библиотеку под русхаб. Для себя делал тест вот этого сервера, открывал в опере 20 закладок и ставил ежесекундное обновление, время работы самого скрипта не превышало и сотой доли секунды, а максимальное время ожидания клиента составляло сотые доли секунды, хотя обработка и стоит в 300 мсек. Я так думаю что апаче даже тяжелее Хотя возможности сравнивать конечно бессмысленно. Единственное, до какого извращения я еще не дошел так это обработка конструкций вида Код <?lua if sData ?>какие-то данные<?lua else ?>еще что-то<?lua end ?> но думаю и это сделаю Я хочу добиться того чтобы юзер воткнул библиотеки если надо и включил скрипт с минимальными настройками, без установки дополнительных программ и извращения с ними. Прямое взаимодействие с хабом дает нам прекрасную и простую возможность напрямую им управлять.Я очень бы хотел сервер, написанный не на скриптовом языке и обрабатывающий луа т.к. все-таки это самый быстрый скриптовый язык, а расширить возможности можно применяя апи... Если будет плагин, из него потом можно и отдельный веб-сервер сделать, то это будет прекрасно, еще одно великолепное творение |
Setuper | ||
24.1.2010, 15:05 |
Клиент FGlink DC++ NEW Впервые представлен пользователям |
Хватит. Delion, я уважаю твое мнение и я уверен что ты его можешь оспорить у любого человека, но если спор заходит слишком далеко, умнее тот кто остановится первым. Omnis, мы тоже умеем веселиться, особенно в той области где хоть что-то знаем. А как известно, в споре рождается истина, ну или ничего не рождается Come_clarity, я бы не стал в такой форме общаться с людьми, как бы они не хамили тебе, даже в интернете, не стоило вступать в спор с самого начала, просто делай что делаешь, этот вариант подойдет для всех лучше всего. |
Wariner | ||
24.1.2010, 14:48 |
BanMe API1, API2 |
Странно, у меня не падала, просто банила по умолчанию. Ограничение делается вот в этой строке: Код if iBanTime and iBanTime > 0 then чтобы ограничить какой-то цифрой, к примеру 100000 делаем так:Код if iBanTime and iBanTime > 0 and iBanTime < 100000 then если подберешь значение при котором птока не падает - пиши, а то в документации этого нет |
X-Sky | ||
24.1.2010, 13:53 |
BanMe API1, API2 |
Илюх, юнный падаван, тебе на будущее, смотри на сколько нелогичная конструкция: Код local sCmd = sData:match"%b<>%s+([!+-/*]%S+)" тут ты делаешь в 1 строке разнообразные префиксы команд, однако из-за захвата вместе с префиксом ты ограничиваешь сам себя одним префиком во 2 строке, правильнее было бы так (спец символы кстати надо тоже экранировать):if sCmd == "!banme" then Код local sCmd = sData:match"%b<>%s+[%!%+%-/%*](%S+)" if sCmd == "banme" then А реализация вот такая, банится на минуты, сколько указано после команды, т.е. !banme 10000 забанит тебя же на 10000 минут, заменяем всю фукнцию ChatArrival: Код function ChatArrival(tUser,sData) local sData = sData:sub(1,-2) local sCmd, sBanTime = sData:match"%b<>%s+[%!%+%-/%*](%S+)%s*(%d*)" if sCmd == "banme" then SendDataToAll(("<%s> %s %s"):format(sBot, tUser[sNick], tMsg[math.random(1,#tMsg)])) SendDataToUser(tUser, ("<%s> Ты забанил сам себя))))"):format(sBot)) local iBanTime = tonumber(sBanTime) if iBanTime and iBanTime > 0 then if not BanUser(tUser, iBanTime, sReason, tUser.sNick, bFull) then BanUser(tUser, math.random(tTime[1], tTime[2]), sReason, tUser.sNick, bFull) end else BanUser(tUser, math.random(tTime[1], tTime[2]), sReason, tUser.sNick, bFull) end return sReturn end end И ставить 3 скрипта чтоли, ничё не пойму? Нет, делаем как описано выше, меню надеюсь сами сделаете |
Wariner, X-Sky | ||
24.1.2010, 13:39 |
Rss. Отображение новинок движка Magneto при подключении юзера |
(Плохо когда не знаешь синтаксис и работу функций). Может кто знает где можно взять толковую книгу(обучалку) по луа на русском языке? Пожалуйста. Луа не так уж и сложен, достаточно изучить 2 и 5 ветки докуменатции: Это проблемы кодировки на сайте? или в скрипте это как-то можно поправить? Кодировка ленты значит утф, решение проблемы можешь найти, к примеру, здесь: RSS Ленты, читай внимательно... |
brauzer84 | ||
23.1.2010, 23:37 |
Help API2 |
Мало молитв... Да и тема оформлена хрен знает как... "Хелп", ну что это такое? Давай все по уму и правилам делать, тогда будет всем простота и радость. Для исправления надо было открыть ленту и увидеть что там немного иной порядок тегов нежли задано в скрипте, и всего-то поменять местами 2 тега в регулярном выражении, теперь все соответствует действительности Учитесь, батенька... Больших вам успехов. P.S.: советую посмотреть что исправлено, сравнив старый скрипт с этим и понять смысл всего что написано выше! |
Артём | ||
23.1.2010, 23:23 |
Клиент FGlink DC++ NEW Впервые представлен пользователям |
Опять устроили ожесточенную встречу мнений ИМХО пусть оно существует, нам хуже от этого не будет, сфера развивается, действо есть, конкуренция даже кое-какая, жалко что наращивается какой-то стремный функционал вместо того чтобы заняться отладкой функций скачки и раздачи, что является основным... Для многих клиенты уже составили свою картину, это как пепси и кока-кола, каждому свое, я вот привык к стрнгу и флаю и пока перебираться ни на что не буду, разве что если кто-нибудь из местных напишет свой клиент |
Come_clarity | ||
23.1.2010, 23:15 |
Rss. Отображение новинок движка Magneto при подключении юзера |
И даже нужно, делается элементарно, в нужном месте кода, можно перед выводом делаем вот такое действие Код sData = sData:gsub("|", "&#".."124;") при условии что sData это наши выводимые данные. Разделение строки на которую заменяется сделано дабы форум не съел этот символ, т.е. можно убрать ".." из этой строки. Если не получится - выкладывай код скрипта, скажем что надо сделать |
SAG | ||
23.1.2010, 16:23 |
WebServer скрипт создающий веб-интерфейс для хаба |
WebServer Версия: 0.2 Совместим с последними версиями хаба! Скрипт создания веб-интерфейса для хаба. Для работы нужна библиотека сокетов, качать ее в теме luasocket для RusHub'а, и библиотека extend.dll (заимствовано из LuaAIO), она находится в прикрепленном архиве, все библиотеки кладем в папку libs. Скрипт по умолчанию работает на 81 порту, и пароль и логин по умолчанию admin, меняется это все в начале самого скрипта. Изменения в версии 0.2 по отношению к 0.1:
Выкладываю версию в таком виде для того чтобы оттестировали и посмотрели, а так же чтобы Jaska перевел под работу с веб-интерфейсом самого русхаба ввиду отсутствия времени у меня. Мануал по работе страниц скрипта для разработчиков: Код луа заключается в теги аналогично пхп: Код <?lua -- код ?>что-то там В самом же парсере все подобные конструкции приводятся к виду Код -- код Подобные скобки нужны чтобы исключить вложенные строки из оформления или еще чего-то, над этим моментом надо еще поработать print([=============[что-то там]=============]) Для перенаправления используется код вида Код <?lua MOVETO = (SERVER.tHeaders["Host"] or "").."/config/" return ?> после определения переменной MOVETO все то что сгенерирует код скрипта не будет использовано и будет совершено перенаправление посредством отсылки нужных заголовков клиенту, чтобы не выполнять лиший код после определения страницы перенаправляения мы делаем возврат (return) из глобального окружения. Для работы с сессиями определена таблица SESSION в которую можно заносить (и удалять) данные в любом виде, идентификатор сессии хранится в куки и срок сессии определяется в конфигурации скрипта параметрами Код iSessionTime = 60 * 60 * 10 где iFirstSessionTime - время на существовании сессии если пользователь зашел в первый раз и не предпринимает никаких действий, а iSessionTime - время для сессии для 2х и более переходов пользователя по страницам сайта.iFirstSessionTime = 60 * 2 Так же скрипт получает таблицу SERVER, являющуюся таблицей клиента, обработанного до этого движком скрипта. Эта таблица имеет вид: Код SERVER = { ["iStartTime"] = 4,968, ["sUrl"] = "/config/", ["sGetData"] = "we=get&page=1234", ["sFile"] = "one.lua", ["tPostData"] = { ["one"] = "1", }, ["tHeaders"] = { ["Accept-Charset"] = "iso-8859-1, utf-8, utf-16, *;q=0.1", ["TE"] = "deflate, gzip, chunked, identity, trailers", ["Accept-Encoding"] = "deflate, gzip, x-gzip, identity, *;q=0", ["Accept-Language"] = "ru-RU,ru;q=0.9,en;q=0.8", ["Host"] = "localhost:81", ["Connection"] = "Keep-Alive, TE", ["Accept"] = "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1", ["User-Agent"] = "Opera/9.80 (Windows NT 5.1; U; MRA 5.4 (build 02620); ru) Presto/2.2.15 Version/10.10", ["Cookie"] = "LUASESSID=93C975EDB2DB840152F7106892A7509C84EBFE8273D3CDF964D061A0E49BDB73; pid=431697804b79522a12991ac0677f2d2d; LUASESSID=93C975EDB2DB840152F7106892A7509C84EBFE8273D3CDF964D061A0E49BDB73", ["Referer"] = "http://localhost:81/config/", ["Cookie2"] = "$Version=1", }, ["tCookie"] = { ["pid"] = "431697804b79522a12991ac0677f2d2d", ["LUASESSID"] = "93C975EDB2DB840152F7106892A7509C84EBFE8273D3CDF964D061A0E49BDB73", }, ["sVersion"] = "HTTP/1.1", ["sLoadFileWay"] = "C:/Server/RusHub/scripts/www/config/index.lua", ["sPath"] = "/config/", ["Client"] = tcp{client}: 00BFC0F0, ["tGetData"] = { ["we"] = "get", ["page"] = "1234", }, ["sMethod"] = "GET", } Для удобства таблицы SERVER.tGetData и SERVER.tPostData вынесены в отдельные таблицы (ссылкой) GET и POST соответственно. Так же таблица Core доступна напрямую из окружения. В сам скрипт глобальное окружение (таблицы table, math и прочие) передаются через ссылку в переменной _G (аналогично модулю). Для опять же удобства работы со строками таблица string внесена в окружение выполняемого скрипта и работать со строками можно по-прежнему, к примеру: Код one = ("one two"):match"%S-" остальные функции надо вызывать через _G, к прмеру так:Код sData = _G.table.concat(tOurData) В глобальном окружении так же существуют функция print, осуществляющая добавление данных ко всему выводимому содержимому. Обычная функция луа по-прежнему доступна через _G.print Плюсом парсер обрабатывает функцию loadtoscriptfile в которую передается путь к загружаемому коду или тексту в файл, обработка идет аналогично loadfile, однако хочу заметить что эта функция обрабатывается на уровне парсинга страницы при ее преобразовании в код луа и в самом окружении она не присутствет. Вот пример, путь мы даем относительно ТЕКУЩЕГО загруженного скрипта: Код loadtoscriptfile("../sources/Login.lua") По любым вопросам и замечаниям работы парсера обращаться в тему скрипта! Скрипт создан на основе сделанного как-то давно мною скрипта Webhubconfig для PtokaX. Старые версии, оставил на память, качать их не надо [attachment=3962:WebServer_v0.1.rar] |
BIMMER71, Jaska, Setuper, FallenAngel, Invisible, Otshelnik-Fm, PomanoB, Saymon21, KamoK, hipimps71, AltSide | ||
23.1.2010, 15:51 |
Предложения для развития |
Однако, для функции Core.SetConfig исключения составляют настройки: sHubIP, iMainPort, sSubPorts. При изменении настройки sHubName или sTopic отправляется соответствующая команда. После изменения, настройки сохраняются. Мне кажется значимый пункт для того чтобы добавить в документацию по функциям. |
Setuper | ||
22.1.2010, 20:04 |
Мафия |
Нет уж, увольте, так и я могу, что я для начала и сделал прежде чем писать сюда, не очень хочется разбираться и вникать. Вы расскажите как оно по-вашему должно работать в ВИДЕ СКРИПТА и на ХАБЕ... + вашими словами мнение об игре, ее суть и правила, дерзайте! ;) А уж потом и поговорим о реализации. |
Wariner, Тёмич | ||
21.1.2010, 21:09 |
Мафия |
Тогда расскажите как оно должно работать |
Тёмич | ||
21.1.2010, 19:53 |
Спасибо, +1, согласен, спасибо, +1 ..... Надоедает |
Что за бред, зачем тему то создавать? По каждому пункту правил будешь открывать отдельные топики? Одно из правил администрации что ее "действия не обсуждаются". Просят - будте добры, в редких случаях можно написать ответом в пост "спасибу" дабы поднять тему, но должна быть еще и смысловая нагрузка в дополнение. Я тоже вам советую использовать эту полезную кнопку, только не перебарщивайте |
X-Sky | ||
20.1.2010, 20:39 |
От: BanLogger От темы с ID: 2945 |
Понял тебя, при первой возможности реализую. Сейчас как скрипт? Работает? Осечек не выдает? |
X-Sky | ||
20.1.2010, 20:33 |
RSS лента |
Так сложно залезть в скрипт и посмотреть что да как? Строки о памяти убираются тут Код sMsg = tostring(cnt).." новых тем с: "..Feed.."\n\n".. заменяем наreply.."".. "\t\t\tОбработано за: "..time Код sMsg = tostring(cnt).." новых тем с: "..Feed.."\n\n".. reply А чтобы сделать разделители меняем Код if next(New) then наreply,cnt = "",0 for key,val in ipairs(New) do local bool = true for i,v in ipairs(Old) do if v[2] == val[2] then bool = false break end end if bool then cnt = cnt + 1 for i,v in ipairs(val) do reply = reply.."\t"..v.."\n" end reply = reply.."\n" end end end Код if next(New) then reply,cnt = "\t============================================================\n",0 for key,val in ipairs(New) do local bool = true for i,v in ipairs(Old) do if v[2] == val[2] then bool = false break end end if bool then cnt = cnt + 1 for i,v in ipairs(val) do reply = reply.."\t"..v.."\n" end reply = reply.."\t============================================================\n" end end end И скажите, много изменений? Это сложно? |
Invisible, CraZy | ||
20.1.2010, 8:51 |
Домены Для Вашего Хаба Как думаете? |
OsSMaX, kikopro | |||
20.1.2010, 0:04 |
Ваши Вопросы И Предложения По Поводу Форума |
Добавил, меняем тут, странно что при включенной опции отображения в доп. инфо в сообщениях этих полей не видно.. |
mariner, evg | ||
17.1.2010, 22:56 |
Ваши Вопросы И Предложения По Поводу Форума |
Я попробовал, а вы лучше выразите свое мнение по поводу цвета |
Wariner | ||
17.1.2010, 18:36 |
Fuck2UnReg API1, API2 | Скрипт ограничений для незарегистрированных юзеров |
Название: Fuck2UnReg Версия скрипта: 1.3 Версия API: скрипт универсальный Первая версия от: 20 октября 2007 Цитата позволяет выбирать что будет запрещено для незарегистрированных пользователей, возможен запрет чата, привата и (или) скачиания и поиска Переделка моего старого скрипта. При запрещенном действии юзеру отсылается сообщение. В этой версии добавлено: апи2 и фильтр айпи-адресов, позволяющий не трогать те диапазоны что вбиты в скрипт.Код -- что запрещаем при старте скрипта (1 - запрещено) tConfig = { ["bMainChat"] = 1, -- главный чат ["bPM"] = 1, -- лички ["bDownload"] = 1, -- скачку } -- диапазоны IP, на которых не применяются правила блокировки tAllowedRanges = { ["127.0.0.1"]= "127.0.0.255", -- localhost } |
Tsd, denis, F I L I N, Kingston, X-Sky, Sunshine-hub, Pro009, доктор ливси, shur49, GULAM33, мамин_парень, Yamakasi, Alexkote | ||
17.1.2010, 18:05 |
HideMe 1.0b API2 |
Цитата $UserCommand 1 3 Меню\\Команда?$<%[mynick]> !cmd1&*#124;<%[mynick]> !cmd2&*#124; * убрать! Попробуй так |
FallenAngel, X-Sky, мамин_парень | ||
17.1.2010, 15:00 |
Новогодняя шапка форума как вам? |
Вот и прошло все новогоднее празденство, может пора вернуться шапке к рабочему варианту? Или еще до февраля пусть еще будет? |
Wariner | ||
16.1.2010, 20:37 |
NoSomeCmdsToUsualUsersBot v1.1 API1, API2 | Скрипт определенных команд "не для всех" |
Название: NoSomeCmdsToUsualUsersBot Версия скрипта: 1.1 Версия API: скрипт универсальный Первая версия от: 20 октября 2007 Цитата Скрипт, дающий доступ к определенным командам только тем юзерам, чей ник вписан в таблицу в скрипте (к примеру рестарт скриптов или отсылка массмеседжа) Если юзер пробует пользоваться командой он получает предупреждение, а ники что вписаны в таблицу в скрипте получают уведомление о команде юзера. Порой полезно когда вы не хотите плодить много профилей.Код -- Конфиг бота: -- Таблица с никами, которым будет разрешены команды: tAllowNicks = { ["Admin"] = 1, ["НИК"] = 1, ["Nickolya"] = 1, } -- Таблица с командами, которые могут использовать только юзеры с никами из таблицы tAllowNicks: tNotAllowCmds = { ["addreguser"] = 1, ["massmsg"] = 1, ["delreguser"] = 1, ["restart"] = 1, ["startscript"] = 1, ["stopscript"] = 1, ["restartscript"] = 1, ["restartscripts"] = 1, ["getscripts"] = 1, ["opmassmsg"] = 1, } -- Cooбщение для тех, кто пытается воспользоваться командой: NotAllowedMsg = "У вас нет прав для использования этой команды! Обратитесь к администратору хаба...;)" |
Invisible, xRayNeo, rival, KRAVA, Saymon21, Dimon21, TiGRpp, Djessa, shur49, мамин_парень | ||
16.1.2010, 17:11 |
Ваши Вопросы И Предложения По Поводу Форума |
Сделал, пользуйтесь, все для вас А картинки лучше все-таки прикреплять к сообщениям... |
Accelerator | ||
14.1.2010, 13:39 |
Вопросы по RusHub Технические вопросы |
Внимательно читаем тему самого хаба и видим: Цитата sSubPorts - дополнительные порты хаба (нужно указывать через пробел). iMainPort - основной прослушиваемый порт. |
fixx, -=Alexandr=- | ||
12.1.2010, 23:37 |
Скрипт онлайн-погоды скрипт погоды сейчас |
Разобрались, код из скрипта постом выше надо поправить чтобы была отсылка в чат. Заменяем Код if bSendToChat then на TmrMan.AddTimer(iTimeToSend*1000,"GetData") end Код if bSendToChat then TmrMan.AddTimer(iTimeToSend*1000,"SendToChat") end Еще нашел странный косяк, если у кого есть подобное - правьте: Код Core.SendToAll(tUser,"*** Погода в Новосибирске: "..(sTemp or "[нет данных]")) заменяем наКод Core.SendToAll("*** Погода в Новосибирске: "..(sTemp or "[нет данных]")) Держи, прости что не так быстро как бы ты хотел, если еще сам не переделал + добавил установку задержки для закачки страницы из интернета, чтобы хаб особо не подисал. Если этого нет в вашем скрипте в самом начале делаем настройку Код -- Таймаут ожидания загрузки страницы (чтобы хаб не подвисал), в секундах: и после iTimeOut = 5 Код http = require("socket.http") дописываемКод http.TIMEOUT = iTimeOut |
Артём, Saymon21 | ||
12.1.2010, 23:23 |
Сохранение из таблицы в хтмл файл |
Не знаю почему не помогут, накидал пару строк, если еще интересно и актуально - посмотрите. Код SaveToHtml() это функция вызова сохранения в файл, в конце кода она только для проверки работоспособности |
intlive | ||
12.1.2010, 23:03 |
нужен скрипт для запрета входа с ограничением скорости аналог RusBot на YnHub |
Переписал под второй апи, пользуйся: NoLimit 1.2 |
НеуНейм | ||
12.1.2010, 23:00 |
NoLimit 1.3 API1, API2 | Скрипт запрета определенных ограничений скорости отдачи |
Версия скрипта: 1.3 Версия API: скрипт универсальный Скрипт запрета определенных ограничений, проверяет тег юзера на ограничение и если оно меньше заданного - отключает юзера с сообщением в приват. Ограничения можно настроить для каждого профиля отдельно. Код -- Минимальное нижнее ограничение на отдачу в кб для каждого профиля в локальном диапазоне: tProfileLimits = { [0] = 0, -- Администратор [1] = 10, -- Оператор [2] = 150, -- VIP [3] = 50, -- Зарегистрированный пользователь [-1] = 50, -- Незарегистрированный пользователь } -- Таблица с локальными диапазонами: tLocalArea = { {"10.0.0.0", "10.255.255.255"}, {"109.86.0.0", "109.87.255.255"}, {"80.73.0.0", "80.73.255.255"}, {"178.150.0.0", "178.151.255.255"}, } -- Минимальное нижнее ограничение на отдачу в кб для каждого профиля во всех остальных диапазонах: tInetProfileLimits = { [0] = 0, -- Администратор [1] = 10, -- Оператор [2] = 150, -- VIP [3] = 50, -- Зарегистрированный пользователь [-1] = 50, -- Незарегистрированный пользователь } Изменения с версии 1.3: добавлены локальные диапазоны и отдельная таблица ограничений для всех остальных диапазонов, исправлены старые ошибки Изменения с версии 1.2: добавлено апи 2 и обновлена функция корректировки тега Старая версия [attachment=3893:NoLimit_1.2.lua] |
Артём, Kingston, Saymon21, мамин_парень, Yamakasi | ||
10.1.2010, 23:10 |
RSS лента |
Да, видимо поздно уже было, поправил ошибку в посту выше, прикладываю скрипт изменненный уже здесь. |
Saymon21, CraZy | ||
10.1.2010, 5:05 |
RSS лента |
Добавляем в самое начало скрипта таблицу Код local FieldsRus = { ["title"] = "Заголовок", -- Заголовок ["description"] = "Описнание", -- Описнание ["link"] = "Ссылка", -- Ссылка ["author"] = "Автор", -- Автор ["category"] = "Категория новости", -- Категория новости ["comments"] = "Комментарии к новости", -- Комментарии к новости ["pubDate"] = "Публичная информацию", -- Публичная информацию ["guid"] = "Глобальный индиккатор новости", -- Глобальный индиккатор новости } и заменяем Код if Fields[field:lower()] then наfield = field:lower():gsub("[<>]","")..":" Код if field and Fields[field:lower()] then field = field:lower():gsub("[<>]","") field = (FieldsRus[field] and FieldsRus[field] or field)..":" |
Invisible, dj hoodo | ||
10.1.2010, 1:58 |
P2p Off 1.6 API1, API2 | Отключение файлообмена |
Сделайте дополнительные проверки в функции чтобы она не сыпала ошибками. Для этого давайте попробуем заменить строки Код local toWhoUser = Core.GetUser(toWho,true) на local toWhoUser2 = Core.GetUser(toWho2,true) Код local toWhoUser = Core.GetUser(toWho or "",true) local toWhoUser2 = Core.GetUser(toWho2 or "",true) |
X-Sky | ||
5.1.2010, 19:39 |
нужен скрипт для запрета входа с ограничением скорости аналог RusBot на YnHub |
НеуНейм, мамин_парень | |||
4.1.2010, 23:46 |
Репорты об ошибках старых версий архив темы ошибок текущей версии хаба |
Попробовал почистить основную тему, все ошибки старых версий сложил сюда, если что не так - выслушаю ваши правки. |
Wariner | ||
4.1.2010, 15:02 |
HideMe 1.0b API2 |
Вот, переделал Жень, пробуйте. |
Invisible, Saymon21, X-Sky, мамин_парень | ||
2.1.2010, 4:39 |
Репорты об ошибках старых версий архив темы ошибок текущей версии хаба |
Отловленные баги при работе с луа: - функция Core.SendToUID при том что она получает 3 аргумента, отправляет сообщение в чат без ника - такое чувство что что-то отваливается когда происходит ошибка при загрузке скрипта, при этом функция перезагрузки скриптов не возвращает ошибку, приходится перезапускать хаб чтобы он перезапустил скрипты. - креш при вызове Core.GetScript с параметром выключенного скрипта, из-за этого невозможно запустить выключенный скрипт (в смысле сделать проверку на включенность скрипта), лог в файле system1.log: Раскрывающийся текст Сигнатура проблемы: Имя события проблемы: APPCRASH Имя приложения: rushub.exe Версия приложения: 0.0.0.0 Отметка времени приложения: 4b3aabde Имя модуля с ошибкой: lua51.dll Версия модуля с ошибкой: 0.0.0.0 Отметка времени модуля с ошибкой: 4b3aabf6 Код исключения: c0000005 Смещение исключения: 000056f8 Версия ОС: 6.1.7600.2.0.0.256.1 Код языка: 1049 Дополнительные сведения 1: 0a9e Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789 Дополнительные сведения 3: 0a9e Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789 Что хочется видеть в апи: - совсем не ясный параметр iByte в функции Core.GetUser(UID/sNick, iByte), либо объяснений по этому параметру, либо нормальной функции - изменение настроек хаба через луа, хотя бы имени хаба и топика - совместить функции Core.SendToNick(sTo, sData, sNick, sFrom) и Core.SendToUID(UID, sData, sNick, sFrom) - может будет удобней если будет парситься майинфо юзеров - и конечно же расширения апи Хабыч, тут нет профилей, они реализуются скриптами, я написал пробную версию подобного скрипта с минимумом функций, лежит оно здесь: FirstRusHubBot |
Setuper | ||
2.1.2010, 4:33 |
FirstRusHubBot приводим RusHub к рабочему виду функционалом скриптов |
Итак, выкладываю скрипт дающий пока небольшой функционал для управления новоиспеченным RusHub'ом. Что сделано:
Получилась гибкая легко изменяемая система, команды лежат в файле cmds.lua, по шаблону легко добавляется что угодно. Так же возможные настройки: имя бота и хабтопик, можно задать какие профили будут иметь ключик, за это отвечает параметр bHaveKey таблицы tProfiles что находится в самом начале файла FirstRusHubBot.lua. Пока все, позже будет больше, тестируйте. Для того чтобы стать админом необходимо зарегистрироваться, залезть в файл RegUsers.dat, поменять там параметр ["iProfile"] на 0 рядом с нужным ником, затем перезагрузить скрипты. Изменения в версии 0.2 по сравнению с предыдущей:
Вот возможности профилей по умолчанию в скрипте на текущую версию: Администратор <RusHubBot> *** Доступные вам команды: *** Команды вашего профиля "администратор": !mypass - напоминает пароль для входа на хаб. Альтернативы: !мойпароль !changepass <новый пароль> - меняет пароль необходимый для входа на хаб. Альтернативы: !сменитьпароль !seepass <ник> - позволяет посмотреть пароль пользователя. Альтернативы: !смотретьпароль !addreguser <ник> <пароль> <профиль> - добавляет регистрацию ника с заданым паролем и профилем. Альтернативы: !добавитьюзера !changereguser <ник> <профиль> - меняет профиль у указанного ника. Альтернативы: !поменятьюзера !delreguser <ник> - удаляет регистрацию пользователя. Альтернативы: !удалитьюзера !getscripts - показывает список всех скриптов. Альтернативы: !скрипты, !получитьскрипты !restartscripts - перезапускает все скрипты. Альтернативы: !перезапускскриптов !startscript <имя скрипта> - запускает указанный скрипт. Альтернативы: !запуститьскрипт !restartscript <имя скрипта> - перезапускает указанный скрипт. Альтернативы: !перезапуститьскрипт !stopscript <имя скрипта> - останавливает указанный скрипт. Альтернативы: !остановитьскрипт !drop <ник> - отключает от хаба выбранного пользователя. Альтернативы: !отключить *** Глобальные команды: !help - вот эта справка по командам. Альтернативы: !помощь !myip - покажет вам ваш ip-адрес. Альтернативы: !мойайпи, !мойип !me <сообщение> - отправить в чат сообщение от 3 лица. Альтернативы: !ми, !я Оператор <RusHubBot> *** Доступные вам команды: *** Команды вашего профиля "оператор": !mypass - напоминает пароль для входа на хаб. Альтернативы: !мойпароль !changepass <новый пароль> - меняет пароль необходимый для входа на хаб. Альтернативы: !сменитьпароль !seepass <ник> - позволяет посмотреть пароль пользователя. Альтернативы: !смотретьпароль !addreguser <ник> <пароль> <профиль> - добавляет регистрацию ника с заданым паролем и профилем. Альтернативы: !добавитьюзера !changereguser <ник> <профиль> - меняет профиль у указанного ника. Альтернативы: !поменятьюзера !delreguser <ник> - удаляет регистрацию пользователя. Альтернативы: !удалитьюзера !getscripts - показывает список всех скриптов. Альтернативы: !скрипты, !получитьскрипты !restartscript <имя скрипта> - перезапускает указанный скрипт. !stopscript <имя скрипта> - останавливает указанный скрипт. !drop <ник> - отключает от хаба выбранного пользователя. Альтернативы: !отключить *** Глобальные команды: !help - вот эта справка по командам. Альтернативы: !помощь !myip - покажет вам ваш ip-адрес. Альтернативы: !мойайпи, !мойип !me <сообщение> - отправить в чат сообщение от 3 лица. Альтернативы: !ми, !я vip <RusHubBot> *** Доступные вам команды: *** Команды вашего профиля "VIP": !mypass - напоминает пароль для входа на хаб. Альтернативы: !мойпароль !changepass <новый пароль> - меняет пароль необходимый для входа на хаб. Альтернативы: !сменитьпароль !drop <ник> - отключает от хаба выбранного пользователя. Альтернативы: !отключить *** Глобальные команды: !help - вот эта справка по командам. Альтернативы: !помощь !myip - покажет вам ваш ip-адрес. Альтернативы: !мойайпи, !мойип !me <сообщение> - отправить в чат сообщение от 3 лица. Альтернативы: !ми, !я Пользователь <RusHubBot> *** Доступные вам команды: *** Команды вашего профиля "пользователь": !unreg - удалить свою регистрацию на хабе. Альтернативы: !удалитьрегистрацию !mypass - напоминает пароль для входа на хаб. Альтернативы: !мойпароль !changepass <новый пароль> - меняет пароль необходимый для входа на хаб. Альтернативы: !сменитьпароль *** Глобальные команды: !help - вот эта справка по командам. Альтернативы: !помощь !myip - покажет вам ваш ip-адрес. Альтернативы: !мойайпи, !мойип !me <сообщение> - отправить в чат сообщение от 3 лица. Альтернативы: !ми, !я Гость <RusHubBot> *** Доступные вам команды: *** Команды вашего профиля "гость": !regme <пароль> - зарегистрироваться на хабе. Альтернативы: !регми, !зарегистрироваться *** Глобальные команды: !help - вот эта справка по командам. Альтернативы: !помощь !myip - покажет вам ваш ip-адрес. Альтернативы: !мойайпи, !мойип !me <сообщение> - отправить в чат сообщение от 3 лица. Альтернативы: !ми, !я |
Setuper, FallenAngel, Invisible, MEXAHuK, ShadoWx, Maximum, Otshelnik-Fm, Accelerator, KT315, Drakula, Kingston, Sekretchik, CrazyKiller, Saymon21, Dimon21, Sorrow, mod, Darksome, Hellsing, AltSide, Panasonic, AfLc, kma21, КрутойПерец, werwolf.zw | ||
1.1.2010, 14:33 |
Подарки от дед мороза API2 |
Если это стока Код sSentence = "*** Дарит "..user.sNick.." "..sSentence.." ***" то по логике вещей надо заменить вот на этоКод sSentence = "*** Дарит "..sUserName1.." "..sSentence.." ***" |
TiGRpp, Плюшевая_мишка | ||
31.12.2009, 18:48 |
С Новым Годом! см название темы |
Хочу от лица начальства вас поздравить с наступающим НОВЫМ ГОДОМ, чтобы были настроения и сбывались мечты, всем много времени и терпения! Спасибо вам что вы есть, надеюсь этот форум стал чем-то больше чем просто каким-то сайтом в интернете для многих тут, и не зря это все делается, очень вам всем признателен, надеюсь в новом году мы будем немного добрее, много умнее и очень усердны, лень уйдет и будут делаться дела, так как хочется именно нам! С уважением, ваш N. |
FallenAngel, Alexey | ||
31.12.2009, 1:33 |
Скрипт онлайн-погоды скрипт погоды сейчас |
Это переделка моего скрипта, написал как сделать тут |
Saymon21 | ||
31.12.2009, 1:32 |
Weather [ Api 1&2 ] [ By Nickolya ] API2 | Расширенная погода с rp5.ru |
Для вывода в чат по таймеру инфы типа Цитата <PtokaX> Расписание Погоды в Туле, Тульская область: В 00:00 было -6.5°C, облачность 10 баллов (без просв.), 729.6 мм рт ст, влажность 91%, ветер ЮЮЗ, 1 м/с, ливневой снег слабый делаем следующее в файле Core.lua, находим: Код local tData2 = {} -- таблица с данными пустая и заменяем это все дело на for i = 1, table.maxn(S.tMadeData) do -- проходим таблицу с готовыми данными if i <= iDaysToChat then -- если нужный нам день, то добавляем в пустую таблицу с данными (кол-во дней - в конфиге) table.insert(tData2, S.tMadeData[i]) -- добавление end end local sTitle2 = S.sMainTitle.." (на "..iDaysToChat.." дня)" -- заголовок с указанием кол-ва дней для ясности local sMsg2 = CreateMsg(tData2, sTitle2, S.sArchiveData, 1) -- функция создания сообщения из таблицы с данными, заголовка и архивных данных Core.SendToAll("<"..sBot.."> "..sMsg2) -- высылаем в чат Код Core.SendToAll("<"..sBot.."> "..S.sMainTitle..": "..S.sArchiveData) |
Saymon21 | ||
31.12.2009, 1:00 |
Скрипт онлайн-погоды скрипт погоды сейчас |
Вот скрипт что получился для Евгения, если хотите - переделывайте, если не можете - кидайте ссылку на страницу где находятся данные, если страница локальная - можно код этой страницы. Скрипт скачивает страницу и находит на ней температуру, по команде выводит в чат и может выдавать в чат через определенный интервал времени погоду. |
X-Sky, CrackWG | ||
29.12.2009, 23:01 |
Репорты об ошибках старых версий архив темы ошибок текущей версии хаба |
СУПЕР! Итак, начнем тестирование... Запуск без луа прошел успешно, закинув библиотеку в папку получил вот такое после запуска: Цитата Сигнатура проблемы: Имя события проблемы: APPCRASH Имя приложения: rushub.exe Версия приложения: 0.0.0.0 Отметка времени приложения: 4b390a23 Имя модуля с ошибкой: ntdll.dll Версия модуля с ошибкой: 6.1.7600.16385 Отметка времени модуля с ошибкой: 4a5bdadb Код исключения: c0000005 Смещение исключения: 00052b79 Версия ОС: 6.1.7600.2.0.0.256.1 Код языка: 1049 Дополнительные сведения 1: 0a9e Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789 Дополнительные сведения 3: 0a9e Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789 Запуск от имени администратора и попытка выставить совместимость с ХРюшей тоже не помогла, ошибка та же, в чем косяк? Винда седьмая... Попробовал посмотреть системный лог хаба, он окзался пустым, полез в настройки, нашел некоторые что не описаны в первом посту Цитата <Item Name="iMaxErrLevel">2</Item> <Item Name="iMaxLevel">0</Item> для любопытства выставил эти настройки в 10000, в лог написалось немного, вот содержимое: Цитата [Tue Dec 29 22:58:34 2009] (3) cPluginList: Open plugin dir: C:/RusHub/plugins/ Это сильно плохо? И работает ли все у вас?[Tue Dec 29 22:58:34 2009] (3) cPluginList: Plugin file name: . [Tue Dec 29 22:58:34 2009] (3) cPluginList: Plugin file name: .. [Tue Dec 29 22:58:34 2009] (3) cPluginList: Plugin file name: lua51.dll [Tue Dec 29 22:58:34 2009] (3) cPluginList: Attempt loading plugin: C:/RusHub/plugins/lua51.dll [Tue Dec 29 22:58:34 2009] (4) tcHashMap: Added: 3645847146 Спасибо за проделанную работу, Илюх, думаю мир дц будет обожать тебя за твое творение!!! |
Setuper | ||
26.12.2009, 13:27 |
Freshstuff3 5.0.1 API2 | Русская версия | Скрипт релизов и заказов |
Папка config, файл main.lua, все просто, ставим тут ноль: Цитата -- Показывать последние Релизы при подключении? 1=PM, 2=mainchat, 0=no ShowOnEntry = 1 |
denis | ||
26.12.2009, 13:22 |
Guess Country ; Страны API2 |
76 строка Код local Path,Os,Gcf = Core.GetPtokaXPath().."scripts/",os.getenv("OS"):lower(),Gc.File косяк скорее всего в моментеКод os.getenv("OS"):lower() т.к. нет проверки на возвращаемое значение ОС, попробуй вот так сделать:Код local Path,Os,Gcf = Core.GetPtokaXPath().."scripts/",(os.getenv("OS") or ""):lower(),Gc.File |
TiGRpp | ||
20.12.2009, 16:06 |
TimeToNewYear API2 | Время до нового года |
Исправления есть, просто скрипт перезаливался в один пост, вот ссылка: TimeToNewYear_littleFix.lua Качаем его и тестируем на здоровье, править там ничего не надо. |
FallenAngel | ||
20.12.2009, 15:33 |
Guess Country ; Страны API2 |
Чтобы полностью избавиться от бота удали эту строчку, в которой менял значение. Смена true на false отнимает только ключ у бота. |
SAG | ||
19.12.2009, 17:46 |
Новогодняя шапка форума как вам? |
Еще немного пофлудим... Недавно сделали новогоднюю шапку для форума, а точнее немного поизголялись над логотипом, хочется ваших мнений и одобрения + новогоднего настроения P.S.: Дед Мороз в трубе посередине и правда прячется, да, так задумано)) P.P.S.: пингвин - отдельный привет для линуксоидов... |
Wariner, Invisible, X-Sky | ||
19.12.2009, 17:39 |
Guess Country Help |
Первая строка выглядит так, разница конечно между s и S, но это значительно: Код local _,_,pfx,cmd = data:lower():find("%b<> (["..Gc.Prefixes.."])(%S+)") хотя именно в этой строке, если не менять команды скрипта, можно оставить и %a+ |
Артём | ||
19.12.2009, 17:36 |
TimeToNewYear API2 | Время до нового года |
Узнаем, сделал пару фиксов, из них: меню теперь собирается при запуске 1 раз а не при каждом заходе, замена функций регистрации бота на отсылку протокольных команд, проверка таймера теперь ведется каждые 200 милисекунд, думаю это исправит все косяки с дубляжом, пробуйте! |
FallenAngel, Serx | ||
18.12.2009, 13:05 |
Подскажите как исправить косяк... |
Все никак не доберусь удалить вообще эти режимы... Инструкция на картинке |
Артём | ||
15.12.2009, 13:07 |
Say_script 1.03 - 1.031 API1 | Скрипт, позволяющий писать от любого имени |
Только цвет фразы-ботовидного увета. ну это уже, как я понимаю,завсит от клиента. Попробуйте дополнить скрипт отправкой еще и майинфо, перед Код Core.SendToAll("$OpList "..sWho) припишитеКод Core.SendToAll("$MyINFO $ALL "..sWho.." no<SomeDC++ V:(r21),M:A,H:1/0/1,S:10>$ $ $no@mail$255008881124$") тут я не стал вписывать соединение юзера, там идет магический байт, который тут вряд ли отобразиться, если хотите - допишите сами, можно выдрать его из CMD-отладчика в дц, по аналогии с отправляемыми MyINFO. |
FallenAngel | ||
10.12.2009, 0:33 |
С Днюхой Тебя! поздравления |
Да, Сев, с Днем Варенья тебя, начинающий скриптодел, успехов и много удачи! |
Invisible | ||
9.12.2009, 19:41 |
от:Как по команде сделать показ сообщения консультация |
Давай по-порядку: 1. Создаем файл hubs.txt с нужным нам содержимым в папке texts, которая лежит в той же папке что и exe'шник самого хаба. 2. В настройках хаба ты включаешь текстовые файлы. Скрипт тебе никакой не нужен чтобы выводить этот файлик! 3. Для надежности перегружаем текстовые файлы. 4. Пробуем команду !hubs на хабе, если она проскакивает в чат идем дальше. 5. Отключаем все скрипты и снова пробуем команду, если все хорошо - включаем по-одному скрипты и смотрим какой нам мешает, пишем об этом сюда. Скорее всего это скрипт лонли или какая-нибудь другая заглушка, либо мультибот. Цитата а мини-меню в самом верху, над всеми скриптами.. вот это совсем не понял, давай без сленга и профессиональных словечек не из сферы дц, пробуем писать на литературном языке годов эдак 90х, тогда будет проще, заранее спасибо |
Uncle_Dif | ||
9.12.2009, 11:04 |
TriviaMods - мод скрипта для командной игры API2 |
Подправил, так пойдет? |
demondroid | ||
5.12.2009, 21:35 |
Weather [ Api 1&2 ] [ By Nickolya ] API2 | Расширенная погода с rp5.ru |
По-идее если сделать Код tTimesToSendToChat = {} тогда инфа перестанет выводиться в чат, проверь еще раз что ты сохранил файл и все сделал именно так, еще можно для надежности удалить все временные файлы из папки скрипта, кроме Core, конечно.tShowAtCurTime = {} |
Come_clarity | ||
4.12.2009, 1:13 |
Freshstuff3 5.0.1 API2 | Русская версия | Скрипт релизов и заказов |
первая строка лежит в самом конце файла ptokaxnew.lua, вторая - 340 строка в файле kernel.lua, третья - последняя строка в том же файле, по аналогии в папке components 2 скрипта, в их конце следующие 2 строки (модуль загружен), а последняя - 215 строка файла requester.lua в все той же папке components... |
Wan | ||
3.12.2009, 1:28 |
Домены Для Вашего Хаба Как думаете? |
Uncle_Dif, во-первых, прекрати под каждым своим сообщением приписывать извинения, это не по-мужицки Во-вторых, в твоем случае твой локальный меняющийся айпи присоединяется к любому домену на |
BIMMER71, Uncle_Dif | ||
24.11.2009, 10:17 |
SmilesLimiter API2 | Бан за злоупотребление смайлами |
По-идее такой ошибки быть не должно или же перед ней должна быть другая, все пути в скрипте, на сколько я вижу, правильные! А... извиняюсь, сейчас все будет, скрипт выложен без его папки! Папку в 1 пост положил, ее класть в папку scripts, сейчас ошибок быть не должно. Смайлы все в файле SmilesHere.txt Вот кстати удаленное обсуждение: http://mydc.ru/topic2708.html |
Invisible, steppnov, shur49 | ||
24.11.2009, 10:14 |
Хаблист |
Или замени в скрипте <? на <?php ... |
Saymon21 | ||
21.11.2009, 22:18 |
Sbot мульти-скрипт |
Нам бы код, так сказать "на растерзание", чисто поучиться, можно, пожалуйста, в каком бы виде он не был?! |
MIKHAIL | ||
13.11.2009, 16:02 |
Support API2 | Комната техподдержки |
Вместо Код SendToRoom(user.sNick,str) делаемКод SendToRoom(user.sNick,str,user.iProfile) затемКод function SendToRoom(name,msg) заменяем наКод function SendToRoom(name,msg,iProfile) и... заменяем в этой функции вездеlocal oldname = name if tAllowProfilesKick[iProfile] then name = "Администрация" end Код if user.sNick ~= name then на Код if user.sNick ~= oldname then Пробуем что получится, отписываемся сюда. |
Артём, мамин_парень | ||
13.11.2009, 0:55 |
MagnetLog API2 | Сохранение магнет ссылок |
возможноли сделать чтобы, если в сообщении несколько магнеток, все магнетки сохранялись а не только последняя? Берем и вот этот код: Код local sMagnet = sData:match".*(magnet:%S+%.%S%S%S).*" local bFlag = true if sMagnet then local sNick = sData:match"(%b<>)" for i,v in ipairs(tMagnet) do if v[1] == sMagnet then bFlag = nil break end end if bFlag then table.insert(tMagnet,{sMagnet, sNick, os.time()+iTime*3600}) end end заменяем на вот этот немного доработанный код: Код local sMagnet, bFlag for sMagnet in sData:gmatch"(magnet:%S+)" do bFlag = true if sMagnet then local sNick = sData:match"(%b<>)" for i,v in ipairs(tMagnet) do if v[1] == sMagnet then bFlag = nil break end end if bFlag then table.insert(tMagnet,{sMagnet, sNick, os.time()+iTime*3600}) end end end Надеюсь моя помощь поддержит автора скрипта и он выполнит другую просьбу пользователя, да, Илюх? |
Accelerator, wasd | ||
9.11.2009, 9:42 |
нужна помощь |
По-моему тут надо искать проблему не в скриптах, а в головах людей... Но если так интересно, можно вписать фразу в этот скрипт, если сами не сделаете - пишите в ту тему, скажу куда и что. Или же есть вариант с простым скриптом, который, к примеру, отлавливает команду и отсылает сообщение: Код -- таблица с командами: tCmds = { ["wds"] = true, ["nfspro"] = true, ["someanothercmd"] = true, } -- фраза для отправки: sSendPhrase = "вам отправлено личное приватное сообщение, прочтите его!" function OnStartup() sBot = SetMan.GetString(21) end function ChatArrival(tUser, sData) local sCmd = sData:match("^%b<>%s+%p(%S+).*|$") if sCmd then sCmd = sCmd:lower() if tCmds[sCmd] then Core.SendToUser(tUser, "<"..sBot.."> *** "..tUser.sNick..", "..sSendPhrase) end end end |
Invisible, Saymon21, X-Sky | ||
8.11.2009, 14:21 |
Помогите перевести скрипт на API2 |
Переделал, для работы потребуется теперь библиотека PXLuaSocket-2.0.2, пробуйте, о всех проблемах можно писать тут |
Pro009 | ||
4.11.2009, 18:32 |
Скрипт проверки баланса хелп |
Код <form method="post"> У тебя та же беда, нечто универсальное в этом скрипте будет не просто создать, ведь везеде свои премудрости. У ТС был довольно простой вариант, к тому же он предоставил все данные и поставил задачу, тут же пришло конкретное решение, все просто, это меня и порадовало Так что кому надо - отписываем адрес станицы с формой логинов и паролей и код того что получаем после входа, тогда и посмотрим что можно сделать... |
RoL | ||
2.11.2009, 13:56 |
Скрипт проверки баланса хелп |
Мой косяк, попробуйте вот этот вариант |
RoL | ||
28.10.2009, 14:34 |
Скрипт проверки баланса хелп |
Так, а замени конструкцию Код local a, b = http.request{ наurl = [[http://billing:8080/balance_sender?login=]]..login..[[&pswd=]]..pass..[[&mid=5]], } Код local a, b = http.request([[http://billing:8080/balance_sender?login=]]..login..[[&pswd=]]..pass..[[&mid=5]]) |
RoL | ||
27.10.2009, 15:49 |
Скрипт проверки баланса хелп |
Возможно и вполне легко реализуется, если пароль для проверки пароля отличается от того что для входа в интернет (так у нормальных провайдеров), то проблем никаких не будет Не сильно много времени у меня, но идея понравилась, - набросал скрипт, в самом конце введи свои данные ("тут_впиши_логин" и "тут_впиши_пароль") и напиши тут что тебе выдал хаб в ответ на запуск скрипта. Тогда посмотрим что можно сделать... Для работы требуется библиотека сокетов LuaSocket! Код local http = require("socket.http") function GetData(login, pass) local a, b = http.request{ url = [[http://billing:8080/balance_sender?login=]]..login..[[&pswd=]]..pass..[[&mid=5]], } if b and b == 200 then local c = a:match("status=\"(%S+)\"") if c then if c == "error" then return "Ошибка логина или пароля" elseif c == "ok" then local d = a:match("summa=\"(%S+)%s*\"") if d then return "Ваш баланс равен "..d.." руб." else return "Сумма не найдена" end else return "Ответ не корректен" end else return "Запрос не корректен" end else return "Запрос не обработан" end end Core.SendToAll("Ответ на запрос: "..GetData("тут_впиши_логин", "тут_впиши_пароль")) |
RoL | ||
26.10.2009, 16:19 |
Limit_Poisk API2 | Скрипт ограничивает поиск и закачку по шаре |
Во-первых лучше сразу просчитать размер ограниченной шары, дабы не производить это действие каждый раз (умножение), с сообщением и этим исправлением скрипт выглядит так: Код Limit=10*1073741824 -- в байтах (10 гб) function ConnectToMeArrival(user) if Core.GetUserData(user,16)<Limit then Core.SendToUser(user, "*** Ваша шара меньше 10 гигабайт, поэтому вы не можете пользоваться файлообменом!") return true end end RevConnectToMeArrival=ConnectToMeArrival |
Saymon21, Nenomernoj | ||
13.10.2009, 11:19 |
Hub Menu API2 | Меню для встроенных команд PtokaX |
Если не ошибаюсь это вшито в некоторые клиенты, в стронге каких-то версий было именно такое отдельное меню, проверь на флайлинке, к примеру, там должно быть так как ты хочешь. |
Gate001 | ||
29.9.2009, 14:07 |
Предложения для развития |
Otshelnik-Fm | |||
28.9.2009, 13:25 |
Support API2 | Комната техподдержки |
Saymon21, X-Sky | |||
27.9.2009, 20:22 |
Антиреклама идея более сложного скрипта |
в строках вида Код if string.find(msg ,tSafe[i] , 1, true) then убираешь последние 2 параметра чтобы было примерно так: Код if string.find(msg ,tSafe[i]) then попробуй... |
Артём | ||
27.9.2009, 18:11 |
Скрипт перенаправления юзверей |
А включить перенаправление при постоянном бане и забанить эти диапазоны не вариант? Или как вариант по-быстрому переделал этот скрипт: Код -- Автор: Артём local tRanks = { {"10.0.0.0", "10.255.255.255"}, -- Диапазон для перенаправления {"192.168.0.0", "192.168.255.255"} -- Диапазон для перенаправления } sAddress = "адрес_для_перенаправления" sReason = "причина для перенаправления" function Ip2Num(sIP) local a, b, c, d = sIP:match"^(%d+)%.(%d+)%.(%d+)%.(%d+)$" return a * 16777216 + b * 65536 + c * 256 + d end function OnStartup() for k, v in ipairs(tRanks) do tRanks[k][1], tRanks[k][2] = Ip2Num(v[1]), Ip2Num(v[2]) end end function UserConnected(tUser) local iIP = Ip2Num(tUser.sIP) for _, v in ipairs(tRanks) do if iIP > v[1] and iIP < v[2] then Core.Redirect(tUser, sAddress, sReason) return end end end RegConnected, OpConnected = UserConnected, UserConnected |
-=Alexandr=- | ||
27.9.2009, 17:36 |
Помогите перевести скрипт на API2 |
Скрипт использует библиотеку pxwsa_l51.dll котроая есть только для 1 апи птоки, для 2 весии апи эта библиотека не подходит и весь скрипт надо переписываыать, проще настроить уже существующий. |
MIhan | ||
26.9.2009, 14:02 |
Женюсь |
И от меня много-много-всего-всего Главное - счастья со второй половинкой!!! Поздравляю от лица всего портала!!! И не сметь ругаться! Чуть что - пиши к нам, послушаем и поможем! А если 23+14-24=13:00 значит уже 2 часа как в счасливейшем браке |
Otshelnik-Fm | ||
23.9.2009, 14:39 |
Мысли вслух-2 |
Так, конфликт прекратить, тут форум во-первых для тех кому интересна конкретная тематика, админы должны В ПЕРВУЮ ОЧЕРЕДЬ быть поддержкой любого пользователя. Обращаюсь ко всем кто является лицом форума, конечно больше к упомянутому тут тезке. Как думаю вы бы сказали сами - не интересно - не пишите или не читайте даже, а если хочется посраться с кем-нибудь и выясьнить кто прав, тогда давайте в личку. district, тебя же лично прошу не обращать внимания на тех кто по-твоему его не достоин, в итоге же в выигрыше остается тот кто сильнее и промолчит в ответ обидчику. Все ваши предложения и мысли выслушаю тут, желательно в культурном виде, многоуважаемые господа. |
district | ||
21.9.2009, 10:40 |
Домены Для Вашего Хаба Как думаете? |
X-Sky | |||
16.9.2009, 9:45 |
TEST |
а можно код на это? можно |
Saymon21 | ||
15.9.2009, 9:10 |
TEST |
Нет это не я)))) это я как-то давно стебался в кс и играл пару дней с таким ником, акк как видите старый, 88 (это не хай хитлер, это хип-хап)))) юзер Теги вроде сделал так чтобы автор темы МОГ ИХ УДАЛЯТЬ, теперь каждый автор немножко модератор Сейчас вам сделаю спойлер для текста и попробую сделать так чтобы автор темы тоже имел доступ к закреплению поста в теме, чтобы было как при линейном просмотре. |
LaLa, Ksan | ||
14.9.2009, 14:04 |
TEST |
Не удаляйте плиз, это я извращаюсь! |
LaLa | ||
13.9.2009, 21:59 |
С праздником |
Присоединюсь. Всех с праздником, всем удачи и правильного кода |
FallenAngel | ||
9.9.2009, 12:28 |
SetMan.GetString |
Часть тут: http://mydc.ru/topic118.html Думаю там и стоит это все продолжить... |
Invisible, Drakula | ||
7.9.2009, 10:39 |
Ваши Вопросы И Предложения По Поводу Форума |
И ещё. Нажав на ссылку: "Активные сегодня", там заголовке написано: "10 авторов сегодня". Я уже об этом говорил раньше. Видимо при переносе форуме изменилось. Это поправил. Еще по просьбе Maximum'а сделал в форуме HexHUB два подфорума: Скрипты для HexHub'а, Плагиный для HexHub'а. Maximum, отпишись, можешь ты их модерировать или нет?! Added: Мучаюсь с хромом, но он упорный, с**а. Может кто знает как решить проблему? Косяк только на странице портала. :( Еще повесил адсенс назад, пользуйтесь, только аккуратно |
Setuper | ||
20.8.2009, 15:05 |
Домены Для Вашего Хаба Как думаете? |
Сделал: city24.mydc.ru <= 84.22.141.71 |
intlive | ||
10.8.2009, 10:56 |
Несколько Слов О Захватах И Регулярных Выражениях исключительно для разработчиков |
Мерси, а методы len и sub естественно быстрее чем match или find ?! Т.е. к примеру, берем строку "<Nick> lalalalala|", в ней нам нужен текст сообщения, ник нам известен, вот примерный код теста: CODE sData = "<Nick> lalalalala|" sNick = "Nick" iBegin = os.clock() for i = 1, 1000000 do --sNeedData = sData:match("^%b<>%s(.*)|$") sNeedData = sData:sub(sNick:len() + 4, -2) end --Core.SendToAll((os.clock() - iBegin).." secs with _match_ and data: "..sNeedData) Core.SendToAll((os.clock() - iBegin).." secs with sub and data: "..sNeedData) А вот результат, сначала закоментированы 2е строки, 5 раз, потом первые: Цитата [11:52:22] 0.74899999999991 secs with _match_ and data: lalalalala [11:52:23] 0.71699999999998 secs with _match_ and data: lalalalala [11:52:25] 0.73300000000006 secs with _match_ and data: lalalalala [11:52:25] 0.73299999999995 secs with _match_ and data: lalalalala [11:52:26] 0.74900000000002 secs with _match_ and data: lalalalala [11:52:41] 0.702 secs with sub and data: lalalalala [11:52:42] 0.71799999999996 secs with sub and data: lalalalala [11:52:44] 0.702 secs with sub and data: lalalalala [11:52:44] 0.74900000000002 secs with sub and data: lalalalala [11:52:44] 0.73299999999995 secs with sub and data: lalalalala Как видите на милионе операций разница есть, незначительная, так что лучше использовать? |
Invisible | ||
10.8.2009, 9:06 |
Домены Для Вашего Хаба Как думаете? |
Сорри за задержку, кучусь как белка в колесе, сделал, прием заявок продолжается! fullhub.mydc.ru <= 94.232.12.211 Тему подчистил |
himikell | ||
29.7.2009, 9:02 |
Помогите избавится от ошибки UserToBotDescription (API1) |
Ищешь вот эту строку Код local sNewMyINFO = "$MyINFO $ALL "..i.." "..tNeedUser.sDescription.."<"..v["sNeedClient"].." V:"..v["sNeedVersion"]..",M:"..tNeedUser.sMode..",H:"..v["sNeedHubs"]..",S:"..tNeedUser.iSlots..">$ $"..v["sNeedConnection"].."$"..sMail.."$"..tNeedUser.iShareSize.."$" и в ней заменяешь Код M:"..tNeedUser.sMode..",H: наКод M:"..(tNeedUser.sMode or "P")..",H: |
Артём, мамин_парень | ||
25.6.2009, 10:48 |
Банер хаба с онлайном юзеров и шары. |
Это просто стучалка порта, она не определяет сколько где народа и шары, не так? Если порыться в мануале по функциям пхп и найти разумную статью про создание изображений можно сделать такую штуку. Сделаем, обещаю! Тогда давайте тут обсудим это, как вы видите этот юзербар, в каких вариантах вы его видите и так далее. Очень трудно самому все придумывать, а делать - нет, вот поэтому и прошу ВАШЕЙ помощи, идеи и мысли принимаются любые, выговаривайтесь, заодно и постов у вас прибавится. |
BIMMER71, FallenAngel | ||
18.6.2009, 13:13 |
Домены Для Вашего Хаба Как думаете? |
Оформил: goldhub.mydc.ru <= 89.222.185.103 |
Electr0n1q | ||
11.6.2009, 13:23 |
Алгоритм работы поиска в DC Как работает поиск |
По срабатыванию api функции поиска (SeachArrival) тут же высылать свои результаты, думаю только так. Не думаю что тебе это будет кто-то делать (я бы не стал, это во-первых искажение результатов поиска, во-вторых - никто не знает что ты туда хочешь, если рекламу, то она уже всех достала, и так где только можно), но на форуме есть как описание функций, так и описание протокола, плюс ты смотришь скрипты что работают с поиском, тут тоже такие есть! Так что сделать это даже новичку будет не трудно, правда времени на это понадобится побольше. Немного подскажу: сортировка идет в большинстве клиентов по количеству совпадений, так что чем больше у тебя будет ответов, тем выше будет твой резульат. |
bestnokia | ||
|
Сейчас: 26.11.2024, 23:17 |