Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
3.10.2010, 17:48 |
ChatHistorySQL История чата |
Код date ("H:i:s Y-m-d", $row['time']) |
intlive | ||
1.10.2010, 12:17 |
Доработанный Tag Script API1 | Добавляет имя профиля в Описание юзера |
Анатолий, вы видимо туго воспринимаете информацию... Чтобы "нормально" отображало всё надо забить свои диапазоны в скрипт, они не имеют свойств настраиваться самостоятельно. И если надо поменять то, что в квадратных скобках, это делается проще некуда, блокнотом... А выражаться надо понятнее, если что-то не работает или не так, как вам надо - пишите все детально и во всех мелочах, тогда разобраться всегда будет просто. Подскажу еще один скрипт, называется Description_Network, ищите на форуме. |
OLGA | ||
30.9.2010, 10:16 |
Доработанный Tag Script API1 | Добавляет имя профиля в Описание юзера |
OLGA, достаточно настроить правильно хаб! На странице настроек "Моя информация" ставишь в нужных местах галочки и отправляешь информацию всем. P.S.: пишите как пятнадцатилетний школьник-задрот.... |
мамин_парень | ||
24.9.2010, 17:29 |
От: Stoptrep От темы с ID: 1337 |
В идеале - вправить мозги админу... А так, надо в начало скрипта добавить таблицу с профилями, которые не будут лимитироваться скриптом: Код tAllow = { И после [0] = true, [1] = true, } Код function ChatArrival(tUser) добавитьКод if tAllow[tUser.iProfile] then return end |
Invisible | ||
21.9.2010, 17:29 |
Чат Комнаты API2 | Возможно создать несколько чат комнат |
VOVKT, то, что юзер отправляет кому-то в приват, он всегда видит в неизменном виде, в отличие от общего чата, так что отправлять ему его же текст не имеет смысла. И все команды и прочее, что идет в привате всегда будут видны "как есть". Что касается захвата, то в функции tSys:DoCmd идущие за командой даты ловятся как Код sA |
VNoName | ||
21.9.2010, 13:40 |
Weather [ Api 1&2 ] [ By Nickolya ] API2 | Расширенная погода с rp5.ru |
Из изменений на сайте - замена Код id=forecast на Код class=forecast и полный переход на utf-8... Исправленная версия для 2 апи в первом посту. |
Ksan | ||
21.9.2010, 12:00 |
string.gsub string.gsub замена > < аналогом < > |
Итак, для начала, я думаю, тебе надо прочитать Несколько Слов О Захватах И Регулярных Выражениях. Затем могу предложить такой костыль, который я как-то сделал для скрипта SmilesLimiter: Код tMagic = { ["%^"] = "%%%^", ["%["] = "%%%[", ["%)"] = "%%%)", ["%("] = "%%%(", ["%+"] = "%%%+", ["%*"] = "%%%*", ["%$"] = "%%%$", ["%?"] = "%%%?", ["%."] = "%%%.", ["%-"] = "%%%-", } function MakeNormMagicCharacters(sData) local sData = string.gsub(sData, "%%", "%%%%") for sFrom, sTo in pairs(tMagic) do sData = string.gsub(sData, sFrom, sTo) end return sData end Применение в твоем случчае: Код gsub( MakeNormMagicCharacters("8-\\"), "<img src='dckolobok/blush2.bmp.png'>"):gsub( MakeNormMagicCharacters("%-\\"), "<img src='dckolobok/wacko.bmp.png'>"):gsub( MakeNormMagicCharacters("$-\\"), "<img src='dckolobok/beee.bmp.png'>"):gsub( MakeNormMagicCharacters("{:-\\"), "<img src='dckolobok/unsure.bmp.png'>") Для справки: в луа символ \ является служебным и для его нормального использования надо писать \\ Двойная кавычка экранируется как \" Либо еще можно использовать метод отсюда, он оптимальнее. Но лучше изучить просто какие символы экранируются и записывать вообще вот так: Код gsub( "8%-\\", "<img src='dckolobok/blush2.bmp.png'>"):gsub( "%%%-\\", "<img src='dckolobok/wacko.bmp.png'>"):gsub( "%$%-\\", "<img src='dckolobok/beee.bmp.png'>"):gsub( "{:%-\\", "<img src='dckolobok/unsure.bmp.png'>") |
Invisible, Saymon21, foXDEvil | ||
21.9.2010, 10:50 |
Домены Для Вашего Хаба Как думаете? |
Цитата dc-urbania A 178.165.114.206 Готово! |
@_JuNiOr_@ | ||
20.9.2010, 14:05 |
ShortUrls API2 | Скрипт сокращения ссылок в чате |
Обновил версию по запросу реквестера, вся информация в первом посту. |
DEN 007, sania | ||
17.9.2010, 22:46 |
HiLo 1.0c API2 | Угадай число |
Все конечно очень хорошо, но это не так тяжело сделать и самому, берем такую функцию (она немного извращена мной) Код function SerializeToString(tTable, sTableName, sTab) local tTableConcat = {} local sTab = sTab or "" table.insert(tTableConcat, sTab) table.insert(tTableConcat, sTableName and sTableName.." = {\r\n" or "return {\r\n") for key, value in pairs(tTable) do local sKey = (type(key) == "string") and ("[%q]"):format(key) or ("[%d]"):format(key) if(type(value) == "table") then table.insert(tTableConcat, SerializeToString(value, sKey, sTab.."\t")) else local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value) table.insert(tTableConcat, sTab) table.insert(tTableConcat, "\t") table.insert(tTableConcat, sKey) table.insert(tTableConcat, " = ") table.insert(tTableConcat, sValue) end table.insert(tTableConcat, ",\r\n") end table.insert(tTableConcat, sTab) table.insert(tTableConcat, "}") return table.concat(tTableConcat) end И делаем, к примеру, вот так Код Core.SendToNick('Invisible', SerializeToString(Core.GetOnlineNonOps(), "Core.GetOnlineNonOps()")) и смотрим что выходит, так со всем, что нам надо... Лично я учился так. |
Invisible | ||
15.9.2010, 9:15 |
Чат Комнаты API2 | Возможно создать несколько чат комнат |
Код function UserDisconnected(tUser) for sRoom, t in pairs(tRooms) do local sNick = tUser.sNick if tRooms[sRoom]["tMembers"][sNick] then tRooms[sRoom]["tMembers"][sNick]=nil tSys:Save(tRooms,"tRooms",tSys.sScriptsPath..tSys.hFile) tSys:SendToUser(sNick,tRooms[sRoom].sMsgExit,sRoom,sRoom) if tSys.bShowEnterExit then tSys:SendToMembers(sNick,sRoom,"*** Вышел: "..sNick,sRoom) end end end end Чтобы не было лишнего пробела замени Код local _,_,sArg1,sArg2,sArg3=string.find(sData,"%$To:%s+(%S+)%s+From:%s+(%S+)%s+%$%b<>(.*)") на Код local _,_,sArg1,sArg2,sArg3=string.find(sData,"%$To:%s+(%S+)%s+From:%s+(%S+)%s+%$%b<>%s(.*)") |
VNoName | ||
14.9.2010, 12:34 |
Чат Комнаты API2 | Возможно создать несколько чат комнат |
Код -- return true -- было вот здесь end return true -- стало здесь, и так надо сделать по всей функции tSys:DoCmd(sNick,sArg,sRoom) elseif self:String2Lower(sCmd)==self:String2Lower(self.sCmdExit) then |
VNoName | ||
13.9.2010, 15:52 |
RegmeEmail API2 | Регистрация через e-mail |
Код Core.SendToOps(([[<%s> Зарегистрировался новый юзер, вот детали регистрации: Ник: %s Пароль: %s Шара: %s IP: %s Режим работы: %s Открыто слотов: %s ]]):format(sBot, tUser.sNick, sPasswd, GetNormalShare(Core.GetUserValue(tUser, 16) or 0), tUser.sIP, Core.GetUserValue(tUser, 10) and "Актив" or "Пассив", Core.GetUserValue(tUser, 21) or 0)) Функция GetNormalShare, ее надо дописать в самый конец скрипта: Код function GetNormalShare(s) s = tonumber(s) or 0 if s >= 1125899906842624 then return (math.floor(1000 * s / 1125899906842624) / 1000).." ПБ" elseif s >= 1099511627776 then return (math.floor(1000 * s / 1099511627776) / 1000).." TБ" elseif s >= 1073741824 then return (math.floor(1000 * s / 1073741824) / 1000).." ГБ" elseif s >= 1048576 then return (math.floor(1000 * s / 1048576) / 1000).." МБ" elseif s >= 1024 then return (math.floor(1000 * s / 1024) / 1000).." КБ" else return s.." Б" end end Писал без проверки, так что за код не ручаюсь. |
-=Zion=- | ||
13.9.2010, 13:45 |
Викторина API2 |
Ошибка значит что во всем скрипте где-то в функцию отправки пользователю не переданы данные... Предлагаю вот такой фикс, заменяем Код function TrivEx:SendToUser(curUser,data) наif (self._datamode == "main") then Core.SendToNick(curUser.sNick,"<"..TrivEx._Sets.bot.."> "..data) else Core.SendPmToNick(curUser.sNick,TrivEx._Sets.bot,data) end end Код function TrivEx:SendToUser(curUser,data) if data then if (self._datamode == "main") then Core.SendToNick(curUser.sNick,"<"..TrivEx._Sets.bot.."> "..data) else Core.SendPmToNick(curUser.sNick,TrivEx._Sets.bot,data) end end end |
OLGA | ||
13.9.2010, 13:19 |
RegmeEmail API2 | Регистрация через e-mail |
Точно, спасибо всем за фиксы |
-=Zion=- | ||
12.9.2010, 20:07 |
Чат Комнаты API2 | Возможно создать несколько чат комнат |
Попробуй вот так: Код elseif self:String2Lower(sCmd)==self:String2Lower(self.sCmdUsers) then sRoom=self:CheckRoom(sA,sNick,sRoom) if not sRoom then return true end if tRooms[sRoom]["tMembers"][sNick] then local i, sMembers = 0, {} for sNick in pairs(tRooms[sRoom]["tMembers"]) do i = i + 1 table.insert(sMembers, sNick) end sMembers = table.concat(sMembers, ', ') tSys:SendToUser(sNick,"В комнате "..i.." пользователей: "..sMembers,sRoom,sRoom) return true end |
VNoName | ||
9.9.2010, 9:14 |
Twitter Просмотр статуса пользователя |
Строка Код local sBot только объявляет переменную локальной, бот задается тут:Код sBot = SetMan.GetString(21) т.е. надо заменять эту строку наКод sBot = "Twitter" Чтобы бот не дублировал сообщения в чате заменяем Код if sStatus ~= nil then наCore.SendToAll("<"..sBot.."> *** Twitter "..sOutName.." ***\r\n"..sStatus) end Код if sStatus ~= nil then if not sMemStatus or sMemStatus ~= sStatus then Core.SendToAll("<"..sBot.."> *** Twitter "..sOutName.." ***\r\n"..sStatus) sMemStatus = sStatus end end |
PomanoB, DEN 007 | ||
7.9.2010, 17:04 |
как сделать юзербары со статистикой? |
Поставить |
Invisible | ||
6.9.2010, 23:36 |
Core.GetUserValue |
Цитата 0.4.1.x \ scripting.docs \ scripting-interface.html \ index.html Используй эту страницу и всё поймешь Специально для тебя: Код User data IDs for Core.GetUserData call. 0 - sMode 1 - sMyInfoString 2 - sDescription 3 - sTag 4 - sConnection 5 - sEmail 6 - sClient 7 - sClientVersion 8 - sVersion 9 - bConnected 10 - bActive 11 - bOperator 12 - bUserCommand 13 - bQuickList 14 - bSuspiciousTag 15 - iProfile 16 - iShareSize 17 - iHubs 18 - iNormalHubs 19 - iRegHubs 20 - iOpHubs 21 - iSlots 22 - iLlimit 23 - iDefloodWarns 24 - iMagicByte 25 - iLoginTime 26 - sCountryCode |
Invisible | ||
6.9.2010, 23:19 |
Запросы на скрипты |
Он говорит что глобальной функции extractCmd не существует, по коду так оно и есть, так что либо тебе надо ее найти, либо самому отпарсить данные и извлечь из них команду и данные за ней. |
KT315 | ||
4.9.2010, 20:45 |
Домены Для Вашего Хаба Как думаете? |
Такой айпи был закреплен за доменом раньше, на обновление днс надо время, порой оно занимает дни, так что ждите и реже меняйте айпи, лучше никогда... Для достоверности: Цитата uz-torrents A 89.236.254.187 И еще, обращение ко всем, кто получил домен! При обнаружении спама (или другой антиморальной деятельности) на других хабах с наших поддоменов - сначала будет предупреждение в этой теме, потом удаление домена. |
Saymon21 | ||
4.9.2010, 18:23 |
Скрипт Действий API1, API2 | Сообщения от 3его лица в чат |
Естественно разница большая, лучше соединять меню вообще при старте скрипта, очищать память и юзеру отправлять уже готовую строку, в ней, если надо, можно сделать шаблоны для замены через gsub, тогда это максимально оптимизирует скрипт. Если вы собираете строку по маленьким кусам - это плохо, многоразовый вызов одной функции - тоже не ахти. Да и лучше использовать Код Core.SendToUser(tUser вместо Код Core.SendToNick(tUser.sNick Это тоже некого рода оптимизация скрипта.Т.е. лучший для вас вариант такой Код -- при старте А еще лучше сделать отправку меню по запросу или через некоторое время после захода пользователя, это дает некую разгрузку и клиенту юзера и хабу.sMenu = "$UserCommand 1 2 бла-бла-бла #124;|".. "$UserCommand 1 2 бла-бла-бла #124;|".. "$UserCommand 1 2 бла-бла-бла #124;" -- при заходе клиента Core.SendToUser(tUser, sMenu) |
Saymon21, RAND(i)M | ||
4.9.2010, 1:44 |
PtokaX 0.4.1.2 ДЦ клиент |
Да уж... Delia, спасибо за разъяснения! xXx-Portal, медвежьи услуги и левая информация на этом форуме воспринимаются оочень плохо, так что думай что делаешь, говоришь, пишешь и так далее, пожалуйста. Еще замечу подобные выходки на форуме и он будет только для чтения. |
Aleksions | ||
4.9.2010, 1:39 |
Время Стран.(Городов) Каждые 6 или 3 часов выводило время в чат несколько стран например. |
Ksan, так делать нельзя... Решение дано в скрипте. Если интересно - взгляни код, выкладываемый мной. Что будет неясно - спрашивай на хабе Итак, скрипт, мною как-то сделанный немного перековеркали, не в лучшую сторону, я вам скажу. Немного его переписал. Теперь таблица с временными поясами выглядит так: Код -- Часовые пояса, 1 параметр здесь служит приставкой для времени и даты, первый параметр - смещение относительно текущего времени: tTimeZones = { --{0, "MSK"}, {4, "NRSK_"}, } Таблицу вывода надо переписать вот так: Код tFormat = { [1] = { ["iInteval"] = 10, ["sWhatBeforeInfo"] = "[", ["tPhrases"] = { "---==СЕРЕБРО==--- DChub]", "Хозяин хаба: Otmorozov]", "Оператор хаба: Алексашка]", "Московское время: HOURS:MINUTES]", "WEEK DAY MONTH YEAR г.]", "Норильское время: NRSK_HOURS:NRSK_MINUTES]", "NRSK_WEEK NRSK_DAY NRSK_MONTH NRSK_YEAR г.]", "Юзеров на хабе: USERS]", "Общая шара хаба: SHARE]", }, }, } Как видите, для городов, где смещен часовой пояс, мы добавляем приставку к заменяемому параметру из таблицы tTimeZones. Сам скрипт с исправлениями прикрепляю: [attachment=4985:Informer_.lua] P.S.: OLGA, на форуме можно прикладывать файлы к сообщениям, делайте это, обменники тут в моде, как и код на всю страницу. И вы случайно не сам мисьё Otmorozov? |
OLGA | ||
2.9.2010, 18:57 |
Thunder API1, API2 | Бот |
Цитата <PtokaX> *** Nickolya2 с IP 127.0.0.1 был полностью забанен , наказал Nickolya по причине: test. Код <String Name="FullLwr">полностью </String> После полностью надо просто поставить неразрывный пробел |
Don_Kocha | ||
1.9.2010, 23:17 |
Скриптик такой... Смысл скрипта сокращение http ссылок |
Invisible, DEN 007 | |||
1.9.2010, 23:14 |
ShortUrls API2 | Скрипт сокращения ссылок в чате |
Название: ShortUrls Версия: 1.01 Версия API: API2 Автор: Nickolya Запросил: DEN 007 здесь Скрипт сокращает в чате все ссылки, превышающие заданный в скрипте порог длинны, через сервис При отправке в чат чего-то типа Код http://mydc.ru/ipb.html?act=Search&nav=at&CODE=show&searchid=8176c5fd684f87cf834d8493133d1cb3&search_in=topics&result_type=topics&lastdate=86400 мы получимЦитата <Nickolya> Код Изменения в 1.01: - команда для получения короткой ссылки - профили, которым доступна команда - меню для команды Из конфига можно выделить Код local iMaxLen = 40 -- максимальная длинна ссылки для отправки в чат без сокращения, при ее привышении ссылка будет сокращена http.TIMEOUT = 1 -- таймаут для ответа от сервера, в секундах local sSeeCmd = "getshorturl" -- команда для получения короткой ссылки local tCanUseCmdsProfiles = { -- профили, которым можно использовать команду [0] = true, [1] = true, [2] = true, [3] = true, [-1] = false, } local sMenuWay = "Меню пользователя\\" -- путь в меню Для работы, естественно, потребуется установленная библиотека сокетов. Старая версия [attachment=4974:ShortUrl...a_v_1.00.lua] |
Invisible, Accelerator, Saymon21, Aлзим, DEN 007, sania, Something_Wild | ||
31.8.2010, 20:08 |
Предложения для развития |
Есть подобная фишка в хексхабе, в верли тоже на команду отдельное событие. Я считаю что стоит сделать как с таймерами, т.е. функция типа Core.AddTrigger("somecmd") будет возвращать айди события, а по событию будет вызываться функция OnTrigger(iId), при указании функции в Core.AddTrigger("somecmd", "SomeCmdFunction"), будет вызываьться функция, переданная вторым параметром. А вот передачу параметров в таблице tParams не считаю удобным т.к. они используются всегда по-разному (порой нужно взять параметры через пробел, порой нужна вся строка), поэтому можно просто передавать строку, идущую за командой. |
Saymon21 | ||
30.8.2010, 23:36 |
Помогите перевести |
Пожалуйста, скрипт просто ужасен, немного его подретушировал Остальное, как было замечено выше, - на форуме... |
OLGA | ||
28.8.2010, 0:09 |
Hideme скрипт скрытия в юзер-листе |
Поправил скрипт немного, теперь всё работает, чтобы скрипт работал корректно он должен стоять поверх скрипта FirstRusHubBot. В скрипте сделал вот так для клиентов, поддерживающих характеристику QuickList: Код OnGetNickList = OnValidateNick Проверьте скрипт у кого есть в клиенте подобная характеристика... Скрипт в 1 посту. |
Setuper, Saymon21 | ||
26.8.2010, 13:35 |
Официальная страничка RusHUB Внимание - вопрос |
Теперь прикручен и |
Ksan, Accelerator, Saymon21 | ||
25.8.2010, 6:10 |
Setting Saver API2 | Сохраняет настройки хаба |
Отправляет по таймеру только указанному нику. Смотри в настройках Код local sReportNick = "Tsd" -- Отправлять нику сообщение о сохранении по таймеру. Оставьте пустые кавычки если не надо |
xXx-Portal | ||
23.8.2010, 12:47 |
Полоса в меню |
Поправил, и не забывайте что || надо заменить на & #124;| без пробела, естественно. |
random name | ||
18.8.2010, 11:49 |
Помогите ! со скриптом ) |
Надо всего-то удалить Код tCommands["lifetime"].fFunction(user) Старайся выражаться яснее, чтобы твоя просьба была понятна всем! На непонятные темы ответов не жди. P.S.: за следующую названную ТАК тему будут вешаться предупреждения, после бана мог бы и ознакомиться с правилами форума. |
Don_Kocha | ||
16.8.2010, 16:58 |
Ваши Вопросы И Предложения По Поводу Форума |
Вернул назад форму быстрого ответа и ее закрытость. Проблема с неработающим быстрым редактированием сообщений в теме устранилась. |
Ksan, alex82 | ||
12.8.2010, 17:51 |
Поиск по TTH на MySQL |
Мы уже немного обкатали скрипт с Saymon'ом, оказывается для нормальных ответов надо в файле Searcher.lua выставить настройку Код -- Адрес программы-клиента: таким образом, что ее значением будет ваш внешний айпи, на который присоединяются юзеры, именно айпи! К примеруcfg.sServerAddress = "127.0.0.1" Код -- Адрес программы-клиента: Плюс еще можно в скрипте lua.lua уменьшить интервал поиска, для более быстрой работы программы, сейчас там 15 секунд, попробуйте 10 или 5. Если что - заходите на хаб, спросите там, общаться в онлайне как-то оперативнее Да и в фильтре тоже меняется адрес на ваш внешний, пока это недоработки, исправлю по возможности.cfg.sServerAddress = "93.125.40.40" |
Saymon21 | ||
12.8.2010, 12:14 |
Поиск по TTH на MySQL |
Итак, давайте попробуем 1 версию в действии Первым делом дополняем бд: Код ALTER TABLE `tbl_link` ADD `DATEUP` DATETIME NULL DEFAULT NULL , ADD `DATEFIRST` DATETIME NULL DEFAULT NULL , ADD `USERSEEDER` INT( 11 ) NOT NULL DEFAULT 0 , ADD `USER` TEXT NOT NULL; Теперь надо скачать программу, обрабатывающую поисковые ответы и работающую с бд, качаем из этого поста Searcher_server.rar и распаковываем куда-нибудь, теперь заходим в папке этого "сервера" в файл lua.lua и видим там конфиг, правим его как надо, указываем правильные юзера и пароль к бд, задаем порты, интервалы поиска и прочее. Сохраняем этот файл. Теперь создаем ярлык для lua.exe и в параметрах запуска добавляем ключ -d чтобы вышло что-то типа Цитата C:\Server\luaaio_2.0_windows\lua.exe -d Теперь запускаем этот ярлык и сворачиваем получившееся окно.Далее загружаем и кладем скрипт Searcher.lua в папку скриптов птоки, для работы скрипта потребуется библиотека сокетов. Запускаем скрипт в птоке и теперь можно посмотреть как пошел процесс в отладочном окне программы-поисковика (она свернулась в трей). Пока все, если что-то непонятно - спрашивайте. Функций поиска с сайта пока нет, проверьте на баги первую версию... P.S.: мне кажется понадобится пробросить порты программы в случае с роутером, их 2 штуки. P.P.S.: результаты работы находятся в базе данных, не думаю что в отладочных сообщениях вам будет по-кайфу разбираться, они, в принципе, только для меня. P.P.P.S.: от вас жду хака на магнето, выложенного так же публично P.P.P.P.S.: при использовании скриптов было бы очень любезно сделать активную ссылку (хотя бы у копирайтов движка внизу) на этот форум. |
Lesh™, Saymon21 | ||
11.8.2010, 23:56 |
Помогите реализовать скрипт с PtokaX для Verlihub |
Вернее будет так: Код local _,sIP = VH:GetUserIP(user) Верли еще возвращает переменную результата выполнения запроса, которая нам обычно не нужна и ее можно опустить пустым значением. + не забываем делать переменные локальными Плюс в верли есть такая штука, почти все вызываемые функции имеют обратимость, но для этого не как в птоке надо сделать return true, а вернуть отличное от 1 значение, если мы не хотим останавливать выполнение функции, то необходимо вернуть 1, Код function VH_OnUserLogin(user) VH:SendDataToUser("<"..Bot.."> Тема: '"..tTopic.Topic.."', установил "..tTopic.SetUser.." ("..tTopic.sDate..")|", user) local _,sIP = VH:GetUserIP(user) VH:SendDataToUser("<"..Bot.."> Привет "..user..", добро пожаловать на Дом.ru P2P сервис. Ваш IP: "..sIP.."|", user) return 1 end function VH_OnParsedMsgChat(user,data) local cmd = data:match"%b<>%s+(%S+)" if cmd and cmd == "!topic" then local sMsg = data:match"%b<>%s+%S+%s+(.*)" if not sMsg then VH:SendDataToUser("<"..Bot.."> Вы не ввели текст топика|", user) return 0 end tTopic = { sDate = os.date"%H:%M:%S / %d.%m.%y", SetUser = user, Topic = sMsg } SaveToFile(filename, tTopic, "tTopic") end return 1 end |
Herurg | ||
7.8.2010, 19:52 |
Хочу провести на хабе жеребьевку ФИФА Чемп мира или лигу чемп всеравно |
Держи, ники и команды надо вписывать руками... Результат выдается по запуску скрипта. |
van21 | ||
4.8.2010, 19:00 |
Ваши Вопросы И Предложения По Поводу Форума |
Setuper, вставляется в форум быстрого ответа. Обнови кеш, скорее всего проблема в нем т.к. обновлялись некоторые жаваскритпы. Не так уж и много добавилось, а левая панель скрывается. По-моему так удобней с некоторыми дополнительными функциями из основного редактора. |
Saymon21 | ||
4.8.2010, 18:52 |
Ваши Вопросы И Предложения По Поводу Форума |
Пока добавил кнопку для цитирования ника, сделал расширенным и всегда открытым быстрый ответ. Для основного скина добавил расширение для красивого отображения увеличенных картинок (по нажатию на миниатюре). |
Ksan, Saymon21, X-Sky | ||
3.8.2010, 16:08 |
IP Info API2 | Информация об IP-адресах, отправленных в главный чат |
По просьбе одного из участников форума добавил кое-какой функционал, протестируйте... Цитата Версия 1.01 by Nickolya: - если в сообщении несколько ip - отображается информация по каждому - добавлен вывод информации о доменных именах, теперь необходима еще и бибилиотека socket - добавлена опция вывода сообщений об адресах для всех юзеров Вот результат работы: Цитата <IP-Info> Информация об адресе mydc.ru ( 79.174.78.92 ) : Форум администраторов хабов ( Сервер mydc.ru ) <Nickolya> http://mydc.ru/ http://mydc.ru/ http://mydc.ru/ <IP-Info> Информация об IP-адресе 79.174.78.92: Сервер mydc.ru <Nickolya> 79.174.78.92 <IP-Info> Информация об адресе www.ya.ru ( 93.158.134.3 ) : Поисковая система Яндекс <Nickolya> www.ya.ru P.S.: скрипт может сильно тормозить хаб из-за работы библиотеки сокетов... |
intlive, rus.region78, Invisible, Saymon21, Chimera, Cyber_voodoo | ||
2.8.2010, 23:06 |
С Днюхой Тебя! поздравления |
А сегодня поздравляем нашего повсеместного модератора, администратора и просто хорошего человека X-Sky! Всего хорошего, развития твоих проектов, успехов во всех остальных начинаниях и конечно же оставаться и совершенствоваться в нашем сообществе! |
X-Sky | ||
30.7.2010, 12:59 |
Нужен скрипт ставящий люб приставку перед ником! Чтоб она везде отображался на хабе |
Уже обсуждалось что не надо делать какие-либо приписки к никам в юзер-листе. Пусть ставят сами, а если не дано - пусть не суются... Либо берись писать инструкцию в картинках что да куда нажимать чтобы сменить ник. |
van21 | ||
27.7.2010, 23:27 |
HubTopic Скрипт показывающий ваш текст в строке состояния |
Скрипт менюшек выполняет функцию OnUserEnter при отсылке меню, чтобы не было повторной отправки надо заменить Код function OnUserEnter(UID) на if tAccess[UID.iProfile] then Core.SendToUser(UID,"$UserCommand 1 3 "..tCfg.Menu.."\\Установить тему$<%[mynick]> !хабтопик %[line:Введите тему чата]|") Core.SendToUser(UID,"$UserCommand 0 3") Core.SendToUser(UID,"$UserCommand 1 3 "..tCfg.Menu.."\\Удалить тему$<%[mynick]> !хабтопик офф|") end if sHubTopic then Core.SendToUser(UID,"$HubTopic "..sHubTopic) end end Код function OnUserEnter(UID) if sHubTopic then Core.SendToUser(UID,"$HubTopic "..sHubTopic) end ContextMenu(UID) end function ContextMenu(UID) if tAccess[UID.iProfile] then Core.SendToUser(UID,"$UserCommand 1 3 "..tCfg.Menu.."\\Установить тему$<%[mynick]> !хабтопик %[line:Введите тему чата]|") Core.SendToUser(UID,"$UserCommand 0 3") Core.SendToUser(UID,"$UserCommand 1 3 "..tCfg.Menu.."\\Удалить тему$<%[mynick]> !хабтопик офф|") end end А чтобы сменить топик надо отправлять еще и $HubName, но надо не забыть в нем имя хаба |
Saymon21 | ||
27.7.2010, 22:38 |
Скрипт статистики для админов Статистические данные о посещаемости |
valdis73, если надо скрипт можно сделать так чтобы он считал только определенных пользователей. Опиши тут как лучше, по приставке в нике или по диапазону адресов и мы тебе скажем что сделать чтобы получить желаемое тобой. |
valdis73, мамин_парень | ||
26.7.2010, 21:54 |
Trans API1, API2 |
Сделал проверку слова на ник юзера, может кривовато работать... |
Invisible | ||
26.7.2010, 18:33 |
Cleanreg API2 | Скрипт чистки регистраций |
Если скрипт работает, то его синтаксис тебя не должен заботить, прекращай заниматься ерундой. Не уверен что внятно и правильно объяснил, но если интересно - попробуй вникнуть А ошибка из-за того что к таблице 'SetMan' идет обращение в основной части программы, а не в функции, а существует таблица только когда хаб включен и скрипт запущен. |
striker | ||
26.7.2010, 17:02 |
Скрипт статистики для админов Статистические данные о посещаемости |
Приделать функцию работы исключительно с определенным диапазоном адресов можно, не думаю что это будет проблемой, тем более код очень хорошо прокомментирован. Тем более все упирается в одну строку в скрипте)))) Код local iUC = Core.GetUsersCount() -- текущее кол-во юзеров |
valdis73, мамин_парень | ||
26.7.2010, 10:05 |
Ваши Вопросы И Предложения По Поводу Форума |
"Архив" создал, перенес в него все что было, по тому посту выше о перемещении тоже все сделано, теперь ищите всю информацию в соответствующих разделах Если у модераторов есть мысли по разделам и/или перемещению/удалению тем - пишите, разложим все по полкам, ведь отдельный форум для этого и создавался. |
Setuper, Saymon21 | ||
26.7.2010, 1:07 |
Ваши Вопросы И Предложения По Поводу Форума |
А пока тихо и незаметно появились разделы Скрипты для Eximus, Библиотеки и модули, Сетевые скрипты и Безопасность. Первые 2 раздела я заполнил перенесенными темами, последние два возлагаю на ваши плечи. Все замечания, как всегда, обсуждаются здесь. |
Otshelnik-Fm, Saymon21 | ||
24.7.2010, 19:44 |
Сообщение юзерам с нулевой шарой Сообщение юзерам с нулевой шарой |
Если ты про скрипт Артема - то надо сделать все то что я описывал выше и добавить еще в самом конце Код ChatArrival = UserConnected |
Perspect | ||
23.7.2010, 23:22 |
Логотип для RusHub'а ваши варианты и предложения |
Продолжим творческий марафон Жду Ваших оценок... |
KT315, Saymon21, X-Sky | ||
23.7.2010, 10:41 |
С Днюхой Тебя! поздравления |
Хочу поздравить Илью (он же наш модератор Wariner) с Днем Рождения! Всех благ, светлой головы, доброго настроения, чистой души и конечно же правильного кода Лично от меня - спасибо за то что состоялось такое знакомство |
Wariner | ||
20.7.2010, 14:00 |
Запрет пустого сообщения API 2 |
Да, не позволит, но он не учитывает неразрывный пробел, поэтому будет достаточно вот такого кода Код function ChatArrival(tUser, sData) if sData:find("^%b<>[%s"..string.char(160).."]+|$") then return true end end |
Serx, Saymon21, RoL, WINS, мамин_парень | ||
15.7.2010, 16:18 |
ChatNickChanger by Nickolya API2 | Скрипт смены ников выводимых в чат |
Чтобы не палиться при использовании команды кика через клиента (при отправке <nick> is kicking ... because: ...) необходимо перед Код local tChangedNickTable = tChangedChatNicks[tUser.sNick] or false добавить Код if sData:match "^%b<>%s+is%s+kicking%s+.+$" then return end |
Milena, Saymon21 | ||
9.7.2010, 10:47 |
Часто задаваемые вопросы Eximius | Читать всем без исключения! |
Я так понимаю это изложение своими словами и опытом вот этой темы? Спасибо тебе Тём! Надеюсь тут для новичка понятнее. |
sania | ||
6.7.2010, 9:56 |
Help Возможноли зделать RSS парсинг с UCOZ сайта |
Берем тогда обычный скрипт рсс, можно отсюда: RSS Ленты, API2 | Скрипт для просмотра новостных лент, конфигурируем, можно допилить как надо. Все что я сделал - добавил перекодирование из утф8 и указал адрес ленты + поправил косяк с сохранением файла. |
Wan | ||
5.7.2010, 17:50 |
Fuck2UnReg API1, API2 | Скрипт ограничений для незарегистрированных юзеров |
Надо конечно. В самое начало тогда добавляй таблицу с профилями блокируемых: Код tLockProfiles = { [3] = true, [-1] = true, } И 3 раза в скрипте заменяй Код if tUser.iProfile == -1 and на Код if tLockProfiles[tUser.iProfile] and |
truth, мамин_парень | ||
5.7.2010, 17:14 |
Eximius Windows |
Создал я отдельный форум. От вас жду наполнения информацией по данному хабу. Артём, ты модерируешь этот форум. |
Артём, Saymon21 | ||
5.7.2010, 14:37 |
Домены Для Вашего Хаба Как думаете? |
Домены есть, не было меня Домен оформил: sinsei.mydc.ru |
Sinsei | ||
5.7.2010, 11:45 |
Помогите со скриптом для птоки который удалялбы неиспользуемые реги Помогите со скриптом для птоки который удалялбы неиспользуемые реги |
Темы я кое-как совместил. Автору - сначала изучай форум, потом пиши, ок? |
X-Sky, bot9ra | ||
28.6.2010, 9:14 |
Джинглы "русского Радио" API2 | Вывод случайного джингла из текст.базы |
В Код function UserConnected(user) удалить Core.GetUserAllData(user) INFUserRightclicker(user,data) INFTMR(user, true) end Код INFTMR(user, true) |
GangstaR, prokazzza | ||
25.6.2010, 20:59 |
Пустые строки в тригерах |
Открываешь файл в Notepad++, там выбираешь "Правка"->"EOL Конверсия"->"Преобразовать в UNIX-формат" |
переподвыподверт | ||
25.6.2010, 20:50 |
Радио для хаба информационный скрипт |
Изучи эти 3 темы: Winamp Server Radio, API1 | Радио для пользователей хаба через Winamp Срипт ON AIR Скрипт для icecast Затем еще хотелось бы видеть ссылку на информацию что тебе нужна. Мы же не знаем какой у тебя формат данных чтобы сделать анализ реально ли это или нет. |
Saymon21, мамин_парень | ||
24.6.2010, 11:03 |
Elf Girls API2 | Бот-болтун |
Удали Код TimerR = TmrMan.AddTimer(math.random(math.mintime,math.maxtime)) -- this timer works it gives a nice interval between chat Код chatter = convos[math.random(1,#convos)] Код if tID == TimerR then Core.SendToAll("<"..prefix..elf.."> ".. chatter) for i,v in pairs(BotTrig) do for a,b in pairs(v) do if(string.find(string.lower(chatter),string.lower(i))) then --// start a new timer after the trigger --// this shld give different delays on answer questions from bot to bot TimerD = TmrMan.AddTimer(ChatDelay[math.random(1,table.getn(ChatDelay))]) reply = reply..""..string.gsub(v[math.random(1,table.getn(v))], "%b[]",v) return true end end end end |
prokazzza | ||
24.6.2010, 9:38 |
PM при подключении |
Можно и вот так попробовать: Код iTimerInterval = 60*60 -- время в секундах на рассылку сообщений никам tNicksToSend = { -- ники для отправки ["Nickolya"] = true, ["Nick2"] = true, } -- само сообщение: sMsg = "*** Сообщение от администрации..." function OnStartup() sBot = SetMan.GetString(21) TmrMan.AddTimer(iTimerInterval * 1000, "Send") end function Send() for sNick in pairs(tNicksToSend) do Core.SendPmToNick(sNick, sBot, sMsg) end end function UserConnected(tUser) if tNicksToSend[tUser.sNick] then Core.SendPmToUser(tUser, sBot, sMsg) end end OpConnected = UserConnected RegConnected = UserConnected |
мамин_парень | ||
23.6.2010, 19:08 |
Скрипт для отключения скрипта Нужен скрипт для отключения скрипта по времени |
А скрипт у тебя так и называется? Код sName = "antimat.lua" Надо сменить эту настройку на имя твоего файла для работы скрипта. + Я внес 1 правку, скопируй код их поста alex82'а выше заново. |
Dan Claimant, Тёмич | ||
23.6.2010, 18:53 |
Weather [ Api 1&2 ] [ By Nickolya ] API2 | Расширенная погода с rp5.ru |
Может фиксы были только во 2 апи ввиду его текущей поддержки как основного. Попробуй поправить скрипт в соответствии с моими правками в середине этой темы. Ни у кого больше таких проблем сейчас нет?? |
7up | ||
20.6.2010, 17:57 |
Freshstuff3 5.0.1 API2 | Русская версия | Скрипт релизов и заказов |
Я лишь предположу что это код из файла freshstuff/ptokaxnew.lua в котором надо удалить: Код if #AllStuff > 0 then -- to avoid sync errors and unnecessary function calls/tanle lookups -- declare the local variable local stuff = WhenAndWhatToShow[os.date("%H:%M")] if stuff then if Types[stuff] then Core.SendToAll("<"..Bot.name.."> "..ShowRelType(stuff)) else if stuff == "new" then Core.SendToAll("<"..Bot.name.."> "..MsgNew) elseif stuff == "all" then Core.SendToAll("<"..Bot.name.."> "..MsgAll) else Core.SendToOps("<"..Bot.name.."> В таймер лист была добавлена категория, которой не существует. Нечего выводить. :-)") end end end end |
prokazzza | ||
19.6.2010, 14:04 |
Админка че то не понятно! |
И конечно лучше еще воспользоваться RusRC. |
voronf4 | ||
17.6.2010, 20:27 |
Скрипт Release для PtokaX 0.4.1.x нужен скрипт аля Release or Request (by jiten) под API2 |
По-быстрому перевел, проверил только поверхностно. Базы можно взять старые. А команды скрипта может блокировать скрипт выше этого, попробуй запустить его одного на хабе. |
foralls, мамин_парень | ||
17.6.2010, 9:31 |
Antibot API2 | Скрипт против ботов |
В принципе сумма 2 чисел - арифметическая задачка, решение которой в флуд-боте реализовать не сложно. Но решение задачи можно реализовать во всех вариантах, надо что-то конкретно человекозависимое, капчу мы не берем т.к. это дц. Можно выводить произвольный ряд чисел и просить выбрать большее/меньшее, это интуитивно проще чем складывать числа, к примеру: Цитата Выберите меньшее из чисел: 463, 23567, 45, 57213, 49, 730, 358 Еще хочу вам предложить пару идей для скрипта, если одобрите - реализуем: если юзер возвращается на хаб под тем же айпи, что был у него при вводе команды, то ему не надо вводить код, можно к этому ввести ограничение по времени для действия этой функции, 1 день, к примеру. И еще можно не переспрашивать код если человек вернулся на хаб в течении 5 минут вне зависимости от айпи. |
Drakula | ||
15.6.2010, 16:26 |
ChatLogsMySQL версия 4.3d |
Accelerator, а экранирование данных в запросах ты вообще не применяешь? Получается огромная брешь в скрипте... |
Accelerator | ||
10.6.2010, 19:44 |
Weather [ Api 1&2 ] [ By Nickolya ] API2 | Расширенная погода с rp5.ru |
Да, скрипт полностью ориентирован на интернет, без него смысла не имеет. Чтобы убрать зависания на минуту выстави сам максимальное время на ожидание ответа от библиотеки. Для этого после Код http = require("socket.http") -- loads the HTTP module and any libraries it requires (загружаем библиотечку) добавляй Код http.TIMEOUT = 2 Где 2 - время в секундах на "зависание" хаба. |
prokazzza | ||
9.6.2010, 9:43 |
Открытие хаба |
-=FugeN=- 2, по-моему все справедливо, не прикидывайся идиотом. Перечитай причину бана и перестань заниматься дурью в нашем сообществе. |
Maximum, Berkut, Saymon21, andromed | ||
7.6.2010, 18:46 |
Запрет снятия банов, поставленных другими людьми |
Попробовал учесть ваши пожелания, доработав набросок Alexey'а. Добавил таблицу ников, на которые не будет действовать скрипт: Код local tSuperUsers = { ["Nickolya"] = true, } P.S.: не тестил... |
Saymon21, bot9ra, AndreiDC | ||
7.6.2010, 13:44 |
Запрет снятия банов, поставленных другими людьми |
Перечисли список команд, которые должен проверять скрипт. + еще есть команда очистки всех банов, которую я думаю надо запретить ОПам... |
bot9ra | ||
7.6.2010, 13:01 |
Ipgag V.3.01 API1 | навороченная заглушка юзеров |
В файле Ip.gag.3.0.functions.lua найди Код local data = string.sub(data,1,-2) затем вырежи этот код и помести сразу за local _,_,cmd = string.find(data,"%b<>%s"..prefix.."(%S+)") if cmd and cmdlist[cmd] then if CheckRights(user,cmd) == 1 then return cmdlist[cmd]["Function"](user,data) else user:SendData(BOT,"У вас нет прав, для использования данной команды") end end Код function ChatArrival(user, data) тогда команды будут работать. А вообще мой тебе совет - уволь дурацких ОПов и проблема исчезнет сама по себе. |
Kocha | ||
7.6.2010, 10:04 |
Проблемка с малюсеньким скриптиком для экзекутора! Кто поможит? Проблемка с малюсеньким скриптиком для экзекутора! Кто поможит? |
Поменяй Код 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 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 if S1 then 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 |
bot9ra, sania | ||
6.6.2010, 14:51 |
Проблемка с малюсеньким скриптиком для экзекутора! Кто поможит? Проблемка с малюсеньким скриптиком для экзекутора! Кто поможит? |
Может стоит выложить твою "дописку" (можно околоошибочный код)? Без этого тебе никто не подскажет какая ошибка в коде. Или ищи на форуме решение частых проблем. |
bot9ra | ||
4.6.2010, 14:29 |
Антиреклама для PtokaX API1, API2 | Скрипт антирекламы для чата и лички |
Спасибо за скрипт, но будьте добры его прикладывать к сообщению, ссылки на сторонние хранилища не приветствуются. |
мамин_парень | ||
4.6.2010, 10:01 |
Домены Для Вашего Хаба Как думаете? |
4eBA, если на второй хаб - можно, на 1 хаб 2 домена не делаем. |
Чебурашка | ||
2.6.2010, 12:27 |
Скрипт для icecast |
А... В принципе можно сделать команду вывода того что выводится по таймеру. Не более, для остального просто нет информации. Как будет возможность - добавлю. |
belradio | ||
2.6.2010, 10:16 |
От: Экзекутор (ekzekutor) От темы с ID: 1403 |
Конечно поможем! Если что - мы часто на хабе, да и на форуме стараемся оперативно отвечать. |
Saymon21 | ||
2.6.2010, 9:58 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
А если сделать вот так? Код function GetNickListArrival(tUser) $GetNickList же отсылается в любом случае Однако надо контролировать зашел ли юзер на хаб, иначе при каждом обновлении юзерлиста будет выполняться код.if not Core.GetUserValue(tUser, 9) then -- bConnected Core.SendToUser(tUser,"<"..sBot.."> Загрузка...") end end |
VNoName | ||
30.5.2010, 23:37 |
Скрипт для icecast |
В пхп коде разбираться не охота, но такую страницу пропарсить - плевое дело. Вот пример кода который выдает в чат с заданными интервалом информацию о станции в виде Цитата <PtokaX> *** 0 человек сейчас слушают на BelRadio [ Учел возможность данных в утф и еще кое-какие приятные мелочи, смотрите в настройках Для работы понадобится библиотека LuaSocket. Сейчас заметил что количество слушателей не показыватся, поэтому это можно опустить заменив Код Core.SendToAll(sBot..""..iListeners.." человек сейчас слушают на "..sServer.." [ "..sSendUrl.." ] "..sWeListen) на Код Core.SendToAll(sBot.."На "..sServer.." [ "..sSendUrl.." ] сейчас играет: "..sWeListen) И еще вижу что русские буквы выводятся в непоймикакой кодировке... :( Скрипт выводит их как нижнее подчеркивание. У вас там вывод идет в CP1252 вместо CP1251, хотя вообще должно быть в утф, с этой кодировкой мы вообще не работали, может кто скажет как перевести средствами скрипта по аналогии с этими функциями? Вот таблицы кодировок: |
HackFresse, Saymon21, dj_crazy_joker | ||
29.5.2010, 15:16 |
Antibot API2 | Скрипт против ботов |
Код * Версия 1.2 by Nickolya * + сообщения отсылаются от ника бота хаба * + при сообщении от бота в привате указывается что сообщение доставлено не было * + блокировка юзера на заданное время при заданном количестве неправильных ответов на вопрос: опции iBlockNumbers и iBlockTime * + если юзер, которому разрешено писать, напишет тому, кому это запрещено, то на вопрос отвечать не придется, но только в привате написавшего юзера |
Артём, Drakula, stone | ||
29.5.2010, 14:16 |
От: StatPX От темы с ID: 1269 |
Попробуй отсюда скачать. Запаковал в rar. |
Wan | ||
29.5.2010, 14:02 |
TopicManager API2 | Управление заголовком хаба |
Чтобы не вылетала ошибка в 220 строке замените Код Core.SendPmToNick(tControlNicks[i], sBot,("%s пытался сменить топик на: %s"):format(tUser.sNick, sTopic)) на Код Core.SendPmToNick(tControlNicks[i], sBot,("%s пытался сменить топик на: %s"):format(tUser.sNick, sTopic or "[пустая команда]")) X-Sky, чтобы дополнить топик не надо вписывать еще 1 аргумент, надо дополнить строку: Код SetMan.SetString(10, sTopic.." ("..tUser.sNick..")") С обновлением топика ты заморочал конечно, тебе надо чтобы при определенной команде в топике было 2 топика? |
X-Sky | ||
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 | ||
|
Сейчас: 26.11.2024, 20:05 |