Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
17.7.2011, 18:14 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.5 lua plugin v 2.5 Fixed: Оптимизация запросов на соединение. Одновременный приём до 64 соединений за цикл (до этого было 1 соединение за цикл). Fixed: Проведен стресс-тест с последующей оптимизацией, что позволяет отныне хабу держать 10k+ соединений. Fixed: Устранён баг в команде $SR UDP. Отсутствовала настройка длины команды. Fixed: Оптимизированы события в Lua плагине. Для каждого события создан свой список скриптов. Таким образом, при вызове события не происходит никаких лишних обходов (обходятся только скрипты, в которых есть функция того или иного события). |
Nickolya, PomanoB, KT315, Sekretchik, CrazyKiller, Saymon21, Dimon21, mod, arktik | ||
26.6.2011, 9:52 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.4 lua plugin v 2.4 Added: Добавлена задержка для процесса остановки windows службы Added: В файл RusHub.xml добавлены относительные (относительно него) пути, которые при загрузке заменяются на абсолютные, а при сохранении настроек в файл - обратно в относительные Fixed: Устранен баг в команде $UserIP Fixed: Устранен баг в lua api функции SendToIP Fixed: Устранен баг в установке ipv6 адреса без порта Fixed: Устранен баг в тримировании пустой строки Fixed: Изменена логика работы события OnExit при остановке хаба (теперь событие отрабатывает до дисконнекта всех пользователей хаба) Fixed: Проведено профилирование и оптимизация ядра хаба Fixed: Немного снижено потребление памяти |
Nickolya, mariner, Otshelnik-Fm, PomanoB, Sekretchik, CrazyKiller, Saymon21, arktik | ||
17.6.2011, 20:43 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Залил версию 2.3.3a с исправленной проблемой отсылки ip адресов (http://mydc.ru/topic2378.html) Баг был в хабе, поэтому плагин тот же остался (v2.3) |
PomanoB, Infinity_Love | ||
15.6.2011, 17:08 |
С Днюхой Тебя! поздравления |
Saymon, с днюхой! |
Saymon21 | ||
13.6.2011, 13:31 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.3 lua plugin v 2.3 Added: Поддержка ipv6. Пример настройки одновременного прослушивания ipv4 и ipv6 адресов: Код <Item Name="sAddresses">0.0.0.0:411 [::]:411 [fe80::219:7dff:fe86:e017]:413</Item> Адреса указываются через пробел. Порт указывается через двоеточие (если порт отсутствует, то берётся порт по умолчанию 411), при этом, ipv6 обязательно необходимо заключать в квадратные скобки (ipv4 также может быть заключен в квадратные скобки, однако для ipv4 это необязательное требование). Также вместо ip адреса может быть указан хост, а вместо числового значения порта может быть указан его буквенный аналог (например: 80 <=> http, 443 <=> https, 512 <=> exec и тд.).Fixed: Упрощено взаимодействие плагинов |
Nickolya, mariner, PomanoB, Infinity_Love, Sekretchik, CrazyKiller, Saymon21 | ||
21.5.2011, 17:07 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.2 lua plugin v 2.2 Fixed: Устранен баг в списке удаляемых таймеров Fixed: Убран автозапуск хаба непосредственно после установки сервиса Fixed: Исправлен lang файл по умолчанию Fixed: Устранен баг циклического вызова при отсутствии файла лога Fixed: Устранен баг в вызове параметров UID Fixed: Устранен баг в вызове события OnScriptError |
Nickolya, PomanoB, KT315, Sekretchik, CrazyKiller, Saymon21, Mustik | ||
19.5.2011, 8:51 |
Мафия игра Мафия для Птохи API2 |
А ты глянь на следующую строку, ведь очевидно, что нужно искать функцию RemoveTimer, в которую передаётся вместо числа nil Ведь простейшая ситуация: игрок был зарегистрирован в игре, таймер был остановлен и переменная Tmr была обнулена, игрок уходит с хаба, при выходе вызывается функция UnRegUser и на вызове TmrMan.RemoveTimer(Tmr) скрипт падает, так как переменная Tmr была установлена в nil ранее. |
dimajak | ||
18.5.2011, 20:46 |
Милиция против DC запрет со стороны милиции и провайдера |
http://mydc.ru/topic4698.html + ОПератор, который будет мониторить поиск и добавлять новый контент в базу, благо в скрипте это можно делать прям из окна с результатами поиска и всего одним кликом |
мамин_парень | ||
13.5.2011, 23:26 |
Тексты версия 2.0 |
Код function OnChat(UID, sData) local sCmd = sData:match"%b<>%s+[!+*](%S+)" if sCmd then local sText = Files.LoadText(sPath..sCmd..".txt") if sText then sText = sText:gsub("%[(%S+)%]", { HubName = Core.GetConfig("sHubName"), NickMixLen = Core.GetConfig("iMinNickLen"), NickMaxLen = Core.GetConfig("iMaxNickLen"), Port = Core.GetConfig("iMainPort"), SubPorts = Core.GetConfig("sSubPorts"), Language = Core.GetConfig("sLocale"), HubBot = Core.GetConfig("sHubBot"), }) Core.SendToUser(UID, sText, sBot, sBot) return true end end end |
Accelerator, CrazyKiller, Dimon21, AfLc | ||
4.5.2011, 20:54 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.1 lua plugin v 2.1 Added: Сборка win64 Added: Введено юнит-тестирование хаба Fixed: Устранён баг в lua плагине (удаление из списка) Fixed: Проверено/устранено подтекание памяти Fixed: Исправлен баг в функции получения mac-адреса Fixed: Проведён рефакторинг и оптимизация |
Nickolya, PomanoB, KT315, Sekretchik, Saymon21 | ||
5.4.2011, 10:24 |
Ваш ник занят и проблемы сети проблема повторного подключения к хабу |
Современные клиенты пингуют хабы, отсылая пустую команду (один единственный символ | в сообщении). Пинг происходит примерно раз в 3-4 минуты. Хаб же отключает пользователя по 2 причинам:
Во втором случае действия зависят от реализации сокет-интерфейса ОС. В винде при попытке отослать данные в "мертвый сокет" возвращается ошибка, по которой хаб и удаляет пользователя. Однако существует ряд случаев, когда ошибка может не возникать очень долго и хаб будет думать, что клиент ещё "жив". Возможен случай, когда хаб пытается что-то отослать клиенту, но из-за каких-то неполадок в сети отправленные пакеты теряются, в таком случае хаб будет постоянно пытаться отослать пакеты, не получая никакого ответа, а так как TCP протокол предполагает подтверждение или опровержение доставки пакетов, то хаб будет держать пользователя, пока не получит отказ. Что касается 4 часов, то это keep alive для сокетов, то есть после определенного времени бездействия система пытается проверить состояние соединения средствами протокола tcp. Система отправляет пинги через некоторый промежуток времени, и если после определенного количества пингов не было получено ни одного ответа от клиента, то клиент считается умершим и сокет закрывается системой. |
мамин_парень | ||
22.3.2011, 22:26 |
Библиотека mtime Windows only | Время в миллисекундах |
не кроссплатформенно Вот код функции для линукса: Код #ifndef _WIN32 #include <sys/time.h> unsigned long GetTickCount() { struct timeval tv; gettimeofday(&tv, NULL); return (tv.tv_sec * 1000 + tv.tv_usec / 1000); } #endif // _WIN32 |
Invisible | ||
21.3.2011, 17:28 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Оператор обычно работает быстрее методов, так что лучше использовать оператор #, чем метод len |
Saymon21 | ||
20.3.2011, 15:09 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.0 lua plugin v 2.0 Added: Добавлено определение версии в системах UNIX Added: Добавлен показ в логе загружаемого плагина (имя и версия) Added: Добавлен терминальный сигнал SIGTSTP (Ctrl-Z) Added: Реализован активный поиск со стороны хаба (udp поиск). Added: Полноценная поддержка команды UserIP (для возможности использования клиент должен отослать в $Support характеристику UserIP или UserIP2) Added: Добавлены настройки: sMainPath - основная директория Fixed: Исправлены некоторые не значительные утечки в памяти Fixed: Изменена нотация и проведен рефакторинг кода Fixed: Исправлено логирование (в логгер добавлен буфер для логирования событий до загрузки настроек логирования) Fixed: Исправлен баг в Core.sSystem (возвращалась пустая строка, если скрипт автоматически запускался при старте хаба) Fixed: Устранён баг с выставление флага пассивного режима Fixed: Функция SendToAllExceptIps не работала, а так как её никто не использовал, то для единого стиля функция переименована в SendToAllExceptIPs Fixed: Исправлен счётчик закрываемых соединений Fixed: Оптимизация алгоритма проверки при массовой рассылке Fixed: Изменены идентификаторы команд: Код 0 — $MultiSearch 1 — $MultiSearch Hub: 2 — $Search Hub: 3 — $Search 4 — $SR 5 — $SR UDP 6 — $MyINFO 7 — $Supports 8 — $Key 9 — $ValidateNick 10 — $Version 11 — $GetNickList 12 — Chat 13 — $To 14 — $Quit 15 — $MyPass 16 — $ConnectToMe 17 — $RevConnectToMe 18 — $MultiConnectToMe 19 — $Kick 20 — $OpForceMove 21 — $GetINFO 22 — $MCTo 23 — $UserIP 24 — Ping 25 — Unknown |
Nickolya, mariner, Jackson, Otshelnik-Fm, PomanoB, KT315, Sekretchik, Saymon21 | ||
17.3.2011, 9:57 |
Не работает dofile(filename) ? |
Функция dofile загружает дополнительный lua код в текущий скрипт, и этой функции доступно только глобальное окружение скрипта. В свою очередь, если в загружаемом функцией dofile файле объявляется глобальная переменная, а в самом скрипте определена такая же переменная но локально, то локальная переменная имеет выше приоритет, чем глобальная, при этом функция dofile не имеет доступа к локальной переменной. Отсюда получаем, что dofile загружает в глобальную переменную Players, а скрипт будет брать локальную переменную Players. Для того чтобы обратиться к глобальной переменной нужно обращаться к ней через таблицу _G. То есть в данном случае просмотреть содержимого ГЛОБАЛЬНОЙ переменной Players возможно следующим образом: Код for i,v in pairs(_G.Players) do |
Invisible, PomanoB, Kingston, dimajak, MIKHAIL | ||
14.3.2011, 15:14 |
Описание Протокола ADC Advanced Direct Connect Protocol |
QUI Синтаксис: Код QUI sid Направления: F Стадии: IDENTIFY, VERIFY, NORMAL Описание: Команда, которая указывает на то, что клиент с указанным sid ушёл с хаба. Если SID принадлежит клиенту, которому отсылается данная команда, то это должно означать, что к данному клиенту были приняты какие-то меры (дроп, кик, бан, перенаправление). Хаб не должен посылать клиенту какие-либо данные после того как он отослал ему команду QUI. Команда может содержать следующие параметры: ID - SID палача (например того, кто кикнул) TL - время бана в секундах (Time Left). -1 - постоянный бан MS - причина RD - адрес перенаправления DI - любой клиент который имеет этот параметр в QUI должен закрыть все соединения с другими клиентами Примеры: Код IQUI AAAA |
Saymon21 | ||
14.3.2011, 15:13 |
Описание Протокола ADC Advanced Direct Connect Protocol |
PAS Синтаксис: Код PAS password Направления: T Стадии: VERIFY Описание: Команда для отсылки пароля. Пароль (в кодировке utf-8) следует за случайными данными, которые получены при помощи SID и конвертированы в base32. Если проверка пароля прошла успешно, хаб переводит клиента на стадию NORMAL. |
Saymon21 | ||
14.3.2011, 15:13 |
Описание Протокола ADC Advanced Direct Connect Protocol |
GPA Синтаксис: Код GPA data Направления: F Стадии: VERIFY Описание: Команда на запрос пароля. Параметр data - это не менее 24 случайных символов (в base32 кодировке) |
Saymon21 | ||
14.3.2011, 15:12 |
Описание Протокола ADC Advanced Direct Connect Protocol |
RCM Синтаксис: Код RCM protocol separator token Направления: F, T Описание: Команда на пассивное соединение (Reverse CTM). Пассивный клиент запрашивает соединение с активным клиентом. |
Saymon21 | ||
14.3.2011, 15:12 |
Описание Протокола ADC Advanced Direct Connect Protocol |
CTM Синтаксис: Код CTM protocol separator port separator token Направления: F, T Описание: Запрос на активное соединение (ConnectToMe). Используется активными клиентами для соединения с такими же активными клиентами или для ответа на RCM команду. Только активные TCP клиенты могут отсылать эту команду. token - это строка, которая идентифицирует входящее соединение и должна присутствовать в команде INF соединяемого клиента. Клиенты не должны принимать входящие соединения, если до этого не была послана данная команда. protocol - это произвольная строка, которая указывает на протокол для соединения. В случае соединения по протоколу ADC 1.0 эта строка должна иметь вид "ADC/1.0". Если протокол поддерживается клиентом, то в ответ на RCM должны быть скопированы параметры token и protocol. Если протокол не поддерживается, то должна быть отправлена команда DSTA, которая указывает на возникшую ошибку. |
Saymon21 | ||
14.3.2011, 15:11 |
Описание Протокола ADC Advanced Direct Connect Protocol |
RES Синтаксис: Код RES separator sid (separator param)+ Направления: F, T, C, U Описание: Команда для отсылки результатов поиска. Команда построена по подобию команды INF. Клиенты должны отдавать в этой команде имя файла, sid, размер и метку, а также могут отдавать какие-то дополнительные параметры если таковые доступны. На пассивный поиск каждый клиент в ответ может отсылать до пяти результатов, на активный - до десяти. При пассивном поиске команда отсылается клиенту через хаб, при активном - напрямую. Пассивность клиента определяется из параметра SU команды INF. Параметры: Параметры Имя: FN Описание: полное имя файла в шаре (включая путь к файлу) Имя: SI Описание: размер в байтах Имя: SL Описание: текущее доступное число слотов Имя: TO Описание: метка |
Saymon21 | ||
14.3.2011, 15:11 |
Описание Протокола ADC Advanced Direct Connect Protocol |
SCH Синтаксис: Код SCH separator sid (separator param)+ Направления: F, T, C, (U) Описание: Команда поиска. Каждый параметр данной команды состоит из имени и значения, следующего за именем. Имя параметра состоит из 2 символов (арабские буквы верхнего регистра и/или цифры). Клиенты должны игнорировать неизвестные параметры и производить поиск так, как будто они не передавались. Если все параметры для клиента являются неизветсными, то клиент должен проигнорировать команду и не искать ничего. Параметры: Параметры Имя: AN, NO, EX Описание: поисковый запрос, где AN - означает "и" т.е. включать (and), NO - не включать (and not), EX - расширение. Поиск указанного файла (а также пути к нему) должен осуществляться регистронезависимым образом по подстроке, которая указана в параметре AN, при этом из результатов поиска нужно удалить результаты, которые содержат подстроку, указанную в параметре NO, и в конце оставить результаты с указанным в параметре EX расширением (если этот параметр указан). Параметр EX должен быть без символа '.' спереди Имя: LE Описание: верхняя граница размера файла (в байтах) Имя: GE Описание: нижняя граница размера файла (в байтах) Имя: EQ Описание: точный размер файла (в байтах) Имя: TO Описание: метка. Используется клиентом для того чтобы отличать один поиск от другого. Если этот параметр присутствует с команде поиска, то клиент, получивший эту команду, должен скопировать этот параметр в свою команду с ответом (результатом поиска) Имя: TY Описание: тип поиска. Если этот параметр не указан, то любой тип поиска, иначе 1 - поиск файла, 2 - поиск директории Замечание: Поиск по UDP может подменять IP адрес, и поэтому может быть средством для DDoS атаки. Поиск по UDP следует разрешать только для проверенных клиентов. Примеры: Пассивный поисковый запрос: Код FSCH AABO +TCP4-NAT0 TOauto TRI5YBDRKG6KEDTVZ6ABZDYSVURSSRUHKUHWZILGA Активные поисковые запросы: Код BSCH AAAA TRTVHBXNPAJVRUDNCTJQ5CEACEG2JDEJNAYMH343Y TO3179684286 BSCH AACG TOauto TRQQHYGSUGZ5TWAOJWQNJ6RNA34T6LOSZSBHQ7V4Y BSCH AACQ TRGTVC3IRS6J6QI2DXPFFAPFC6IQ7UAZ6AISSUEQY TOauto |
Saymon21 | ||
14.3.2011, 15:10 |
Описание Протокола ADC Advanced Direct Connect Protocol |
MSG Синтаксис: Код MSG separator sid (separator pm-sid)? separator text (separator ME1)? (separator PM sid)? Направления: F, T Описание: Сообщение чата. Клиент, который получает сообщение должен заключить ник в символы <>, для однотипного отображения. Параметры: Для отсылки личного сообщения указывается параметр pm-sid - это SID клиента, которому предназначено сообщение. Это поле должно содержать реальный SID если это нормальный личный разговор. ME1 - сообщение должно быть отображено как /me в IRC ("*nick text") TS1234567890 - unix время отправки сообщения Примеры: Сообщение чата: Код BMSG AAAA Всем\sпривет Сообщение от третьего лица в чат: Код BMSG AAAA слушает\sхорошую\sмузыку ME1 Сообщение в личку: Код EMSG AAAA AAAB привет PMAAAA Сообщение от третьего лица в личку: Код EMSG AAAA AAAB слушает\sхорошую\sмузыку ME1 PMAAAA |
Saymon21 | ||
14.3.2011, 15:10 |
Описание Протокола ADC Advanced Direct Connect Protocol |
INF Синтаксис: Код INF separator sid (separator param)+ Направления: F, T, C Стадии: IDENTIFY, NORMAL Описание: Данная команда призвана помочь получить обновлённую информацию о клиенте. При её получении, соответствующие параметры добавляются или обновляются. Имя каждого параметра определяется при помощи двух символов, за которыми следуют данные, определяющие значение этого параметра. Значение того или иного параметра может быть стёрто путём отсылки одного только названия параметра (без данных). Клиенты должны игнорировать неизвестные им параметры. Большинство из параметров данной команды интересны только при клиент-хаб соединении. При соединении клиент-клиент данная команда в основном используется только для идентификации. Хабы могут требовать или игнорировать какие-либо или все параметры. Многие из параметров, такие как шара и версия клиента, носят чисто информативный характер и должны быть взяты как есть, ибо их очень легко можно подделать. Однако, клиенты должны стремиться отсылать точные данные о себе для обеспечения общей целостности всей системы, так как неверная информация может раздражать некоторых людей. Для обновления каких-то параметров достаточно отослать только эти изменения, а не все параметры. Параметры: Параметры Имя: ID Тип: base32 Описание: CID клиента (необходим для соединения клиент-клиент). Имя: PD Тип: base32 Описание: PID клиента. Хабы должны проверять, что TigerHash(PID) == CID и удалять это поле прежде чем рассылать остальным клиентам. Данный параметр не должен отсылаться при соединении клиент-клиент. Имя: I4 Тип: IPv4 Описание: IPv4 адрес без порта. Пустой адрес (0.0.0.0) означает, что хаб должен заменить его реальным IP адресом клиента. Хабы должны проверять соответствие между IP адресом в данном параметре и реальным IP адресом клиента чтобы избегать DDoS атак. Клиенты могут отсылать пустой адрес, а могут отсылать правильный IP адрес. Каждый клиент, который поддерживает прямое соединение TCPv4 (актив) должен отослать TCP4 в параметре SU. Имя: I6 Тип: IPv6 Описание: IPv6 адрес без порта. Пустой адрес (: означает, что хаб должен заменить его реальным IP адресом клиента. Каждый клиент, который поддерживает прямое соединение TCPv6 (актив) должен отослать TCP6 в параметре SU. Имя: U4 Тип: целое число Описание: UDP порт клиента. Все клиенты, которые поддерживают входящие UDPv4 пакеты должны отсылать UDP4 в параметре SU. Имя: U6 Тип: целое число Описание: UDP порт клиента. Все клиенты, которые поддерживают входящие UDPv6 пакеты должны отсылать UDP6 в параметре SU. Имя: SS Тип: целое число Описание: размер расшаренных данных в байтах Имя: SF Тип: целое число Описание: число расшаренных файлов Имя: VE Тип: строка Описание: идентификатор клиента и версии (рекомендуется короткий идентификатор и точный номер версии) Имя: AP Тип: строка Описание: идентификатор клиента (application) Имя: US Тип: целое число Описание: максимальная скорость закачки (байт/сек) Имя: DS Тип: целое число Описание: максимальная скорость скачки (байт/сек) Имя: SL Тип: целое число Описание: максимальное число одновременных закачек (слоты) Имя: AS Тип: целое число Описание: автоматический скоростной предел слота (байт/сек). Клиент держит открытым слот до тех пор, пока скорось загрузки не превысит указанную величину Имя: AM Тип: целое число Описание: минимальное количество одновременных загрузок (автоматических режим) Имя: EM Тип: строка Описание: E-mail адрес Имя: NI Тип: строка Описание: ник (или имя хаба). Хаб должен гарантировать, что указанный ник уникален на хабе вплоть до регистра. Правильным считается ник, в котором все символы с юникодами больше 32, хотя хабы могут сами регулировать запрещённые символы в нике и выдавать соответствующее сообщение Имя: DE Тип: строка Описание: описание. Правильным считается описание, в котором все символы с юникодами больше либо равны 32 Имя: HN Тип: целое число Описание: число хабов, на которых клиент является незарегистрированным пользователем в NORMAL состоянии Имя: HR Тип: целое число Описание: число хабов, на которых клиент является зарегистрированным (должен отправить пароль) пользователем в NORMAL состоянии Имя: HO Тип: целое число Описание: число хабов, на которых клиент является оператором в NORMAL состоянии Имя: TO Тип: строка Описание: признак получения RCM/CTM команд при установке связи клиент-клиент Имя: CT Тип: целое число Описание: Тип клиента. 1 - бот, 2 - зарегистрированный, 4 - оператор, 8 - супер юзер, 16 - владелец хаба, 32 - сам хаб (используется при отсылке INF команды самим хабом) Имя: AW Тип: целое число Описание: состояние клиента. 1 - away, 2 - расширенный away - не заинтересован в чате хаба (хабы могут не рассылать массовые сообщения клиентам с таким флагом) Имя: SU Тип: строка Описание: список характеристик, разделённых запятой. Данный параметр служит для уведомления о характеристиках соединенного клиента Имя: RF Тип: строка Описание: URL для перенаправления (хаб или веб страница) Замечание: Обычно только один IP адрес (I4 or I6) используется для всех соединений. Нужно проявлять осторожность при приёме соединений с неизвестного IP. Только проверенным пользователям можно разрешать использовать различные IP адреса. Если пренебречь проверкой соответствия IP, то хаб может быть использован для организации DDoS атак. Когда хаб получает данную команду на стадии IDENTIFY, он должен проверить параметры PD и ID, и либо перейти на стадию VERIFY, отослав команду PAS, либо перейти на стадию NORMAL, отослав собственную информацию командой INF (если это не было сделано раньше), затем отослать команды INF всех подключенных клиентов на стадии NORMAL, и в последнюю очередь отослать всем команду INF соединенного клиента. После того как хаб отослал свою команду INF, в параметре NI будет название хаба, в параметре VE - название платформы хаба и версия, и в параметре DE - топик хаба (описание хаба). Когда клиент получает данную команду при соединении клиент-клиент на стадии IDENTIFY, он должен сопоставить параметры ID и TO, отосланные в команде INF и перейти на стадию NORMAL. Примеры: Код IINF AAAA VEверсия\sхаба NIназвание\sхаба DEописание\sхаба Код BINF AAB3 IDWYCH3RE46Z3JX3J3P3P33NYMVQSSBNVERQTNFVA NIник SL5 SS184304078130 SF1339 HO0 VEApexDC++\s1.3.6 US65536 SUNAT0 I410.10.10.10 HN7 HR1 FS4 |
Saymon21 | ||
14.3.2011, 15:09 |
Описание Протокола ADC Advanced Direct Connect Protocol |
SID Синтаксис: Код SID separator sid Направления: F Стадии: PROTOCOL Описание: Данная команда назначает SID пользователю, который входит на хаб. Хаб должен отослать эту команду после команды SUP, но до команды INF на стадии PROTOCOL. Клиент, получивший эту команду, должен отослать на хаб информацию о себе командой INF. |
Saymon21 | ||
14.3.2011, 15:08 |
Описание Протокола ADC Advanced Direct Connect Protocol |
SUP Синтаксис: Код SUP (separator ('AD' | 'RM') feature)+ Направления: F, T, C Стадии: PROTOCOL, NORMAL Описание: Данная команда определяет какие характеристики будут использоваться со стороны хаба и со стороны клиента. Название характеристики должно состоять из четырёх латинских букв верхнего регистра, при этом последним символом может быть цифра, которая указывает на версию характеристики. Первые же три символа должны быть исключительно латинскими буквами в верхнем регистре, дабы избежать каких-либо конфузов между различными ПО. Все без исключения ADC клиенты должны поддерживать BASE характеристику (или какую-либо её версию). Как сервер, так и клиент могут использовать любую характеристику, указанною другой стороной в команде SUP. Указанная команда также может использоваться для динамического добавления или удаления характеристик. Префикс AD перед характеристикой указывает на то, что характеристика добавляется, префикс RM - указывает на удаление характеристики. Когда хаб получает данную команду на стадии входа PROTOCOL, он должен ответить клиенту такой же командой со своими характеристиками, а также назначить клиенту SID и опционально отослать командой INF информацию о себе, и далее перейти на стадию IDENTIFY. Когда при взаимодействии клиент-клиент один из клиентов получает данную команду на стадии PROTOCOL, он должен ответит такой же командой со своими характеристиками, отправить команду INF о себе и перейти на стадию IDENTIFY. |
Saymon21 | ||
14.3.2011, 15:06 |
Описание Протокола ADC Advanced Direct Connect Protocol |
STA Синтаксис: Код STA separator code separator description Направления: F, T, C, U Стадии: Все Описание: Параметр code имеет формат "xyy", где x - это уровень ошибки, а yy - это код ошибки. Уровень и код ошибки обрабатываются отдельно, один о тот же код может быть на разных уровнях. Уровни:
Коды ошибок:
Замечания: Параметр "description" содержит описание ошибки, для просмотра этого описания пользователем. Даже если код ошибки неизвестен клиенту, он должен отображать текстовое сообщение. Коды ошибок используются для того, чтобы клиенты могли использовать различные действия на различные ошибки. Большинство кодов не содержат никаких параметров и могут использоваться только с типами команд C и I. |
Saymon21 | ||
14.3.2011, 9:52 |
помогите найти скрипт для PtokaX Афаризмы |
ORB, ну сообщения то ты можешь писать, какие проблемы полазить по форуму пару часов и посмотреть что к чему? Или тебя нужно забанить, чтобы ты не писал сразу, а поискал как следует! |
Ksan | ||
6.3.2011, 21:07 |
Antisearch API 2 |
Версия 1.4
|
mariner, Saymon21 | ||
4.3.2011, 18:04 |
Предложения для развития |
Хочу сделать поддержку первой версии команды $UserIP С событием мне кажется будет лучшем вариантом Тут не идёт речь об автоматической отсылке ip адресов при входе на хаб - это поддерживает вторая версия команды. Речь идёт именно о клиентском запросе ip адреса командой $UserIP. Почитай описание команды $UserIP. |
Saymon21 | ||
4.3.2011, 10:14 |
DDD++ – лёгкий и быстрый DC++ клиент Преднастроенный клиент с готовыми списками хабов |
Думаю автору следует указать, что данный клиент - это очередной мод клиента GreyLink, чтобы не было не было подобных вопросов про баги и тд. Invisible, по поводу багов следует обращаться к разработчикам GreyLink. |
Invisible | ||
1.3.2011, 18:22 |
От: Small DC HubList (Хаблист) От темы с ID: 4709 |
EvilNico (91.206.126.125) == Mellon (91.206.126.125) Отсюда и весь холивар. Видимо сюда пришёл спамить. Почитав на dchublist.ru, становится понятно, что всё наоборот, и это на |
Артём | ||
27.2.2011, 11:01 |
ChatRanks топ сообщений в чате |
Поправил и перезалил скрипт |
Otshelnik-Fm | ||
25.2.2011, 17:05 |
Antisearch API 2 |
Подправил некоторые баги с временем, плюс добавил глобальные функции в локальные таблицы (оптимизация). Заменил хранимую функцию as_get_random_tth запросом. Сделал для того, чтобы, не имея доступ к хранимым функциям, можно было делать select запросы в бд (ограничения, позволяющие только получать данные из бд, но не добавлять/обновлять/удалять). Для оптимизации ввёл кеширование (актуально при завале хаба результатами поиска). |
Saymon21, ramzes | ||
24.2.2011, 22:30 |
Antisearch API 2 |
Название скрипта: Antisearch Версия скрипта: 1.4 Версия API: 2 Автор: Setuper Требования: Для работы скрипта требуется библиотека MySQL Описание: Скрипт антипоиска. Скрипт хранит в mysql базе TTH запрещённых файлов. Скрипт автоматически ищет у пользователей запрещённые TTH и даёт наказания за них. Наказания могут быть следующих типов: 0 - без действий; 1 - дроп; 2 - кик; 3 - временный бан ника; 4 - временный бан IP; 5 - временный бан ника и IP; 6 - постоянной бан ника; 7 - постоянной бан IP; 8 - постоянной бан ника и IP. Скрипт имеет меню в поиске и в файл-листах, то есть вводим и ищем в поиске то, что нужно запретить, и через меню одним щелчком добавляем TTH найденного в базу с одновременным наказание пользователя, у которого это нашли. Возможно даже выделить сразу несколько найденных файлов и одним щелчком добавить в бд Для того чтобы добавлять TTH в базу нужно чтобы было создано хотя бы одно наказание. В настройках iDefaultPenaltyId - это id наказания по умолчанию (для менюшки "Быстрое добавление TTH", то есть для добавления в базу TTH с наказанием по умолчанию). Прежде чем запускать скрипт нужно предварительно настроить базу данных на работу со скриптом: 1) Прописать в скрипте настройки коннекта к базе данных. 2) Создать базу 3) Выполнить запросы, которые находятся в файле Antisearch.sql Также необходимо в настройках PtokaX указать какой-нибудь не нулевой UDP порт. Особенностью скрипта является возможность гибкой настройки в mysql прав для юзера, который прописывается в настройках скрипта. Пользователю mysql, который будет прописан в настройках скрипта достаточно будет дать права: SELECT и EXECUTE. Таким образом мы сохраним целостность базы данных. Делалось это с тем рассчётом, что с одной базой могут работать сразу несколько хабов, и для того чтобы админы хабов не могли ничего менять в базе, но при этом им был доступен полный функционал данного скрипта. Если кому-то не понятно сказанное, то разъясняю: право SELECT даёт право на выполнение запросов на получение данных из бд (select запросов), право EXECUTE даёт возможность на вызов хранимых функций. Все действия по вставке, обновлению и удалению какой-либо информации из бд в скрипте происходят исключительно при помощи хранимых функций. Из менюшек думаю будут понятны прочие детали скрипта))) Настраиваем правильно, юзаем и боремся с порнографией [attachment=5651:Antisearch.rar] |
Nickolya, KauH™, Invisible, Артём, PomanoB, KT315, Kingston, MaxFox, Saymon21, DEN 007, ramzes, GULAM33 | ||
22.2.2011, 20:25 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
На lua.ru плохо написано. "r" - открыть файл для чтения. Файл должен существовать. "w" - создать пустой файл для записи. Если файл с таким именем уже существует, то его содержание будет удалено, а файл будет рассматриваться как новый пустой файл. "a" - добавить в файл. Дописывает данные в конец файла. Файл создается, если он не существует. "r+" - открыть файл как для чтения, так и для записи. Файл должен существовать. "w+" - создать пустой файл для чтения и записи. Если файл с таким именем уже существует, то его содержание будет удалено, а файл будет рассматриваться как новый пустой файл. "a+" - открыть файл для чтения и добавления. Все операции записи выполняются в конец файла. Файл создается, если он не существует. Кроме этого, для работы с бинарными файлами существуют моды: "rb", "wb", "ab", "r+b", "w+b", "a+b", то есть теже самые моды но с буквой b на конце. Буква b может также находится и в середине: "rb+", "wb+", "ab+". |
MIKHAIL | ||
24.1.2011, 18:05 |
Люди помогите! помогите с компом |
Очень часто так делают вирусы. Поставь антивирус и проверь им комп |
Something_Wild | ||
18.1.2011, 14:46 |
Surdo_Isolation Почти универсальный скрипт заглушек с богатым меню и возможностями |
В русхабе на такой случай существует функция изменения протокольной команды Core.SetCmd(sData), таким образом, во все скрипты, которые находятся ниже данного, поступит уже изменённая команда |
Nickolya, Invisible | ||
17.1.2011, 10:02 |
Функции Для Разработчиков склад полезных функций |
Вместо tprint наверное table.print ? И если функция print стандартная lua функция, то наверное лучше в ней тоже не использовать конкатенацию, а сделать как в Serialize. То есть, вместо Код print(a..b..c..d) юзатьКод print(a, b, c, d) а на вставку табов между аргументами я думаю можно забить, хотя возможно будет кривовато отображаться |
Nickolya, Invisible, Sekretchik | ||
16.1.2011, 23:00 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.14 lua plugin v 1.33 Added: Реализован стектрейс lua-ошибок: _TRACEBACK = debug.traceback. Fixed: Устранен баг с уборкой мусора от UID. Fixed: Устранен баг в функции закрытия соединения (poll функционал в select случае). Fixed: Объединены функции Core.SendToNicks и Core.SendToUser (функция Core.SendToNicks осталась, но считается устаревшей) Fixed: Усовершенствована функция Core.GetUsers. Разделились возвращаемые пользователи на группы: все и все вошедшие (Core.GetUsers(bAll), Core.GetUsers(sIP, bAll)). Core.GetUsers() - вернёт только уже полностью вошедшие на хаб пользователей Core.GetUsers(true) - вернёт всех пользователей Аналогично и для случая возврата по ip: Core.GetUsers(sIP) и Core.GetUsers(sIP, true) Fixed: Изменена кодировка в файле scripts.xml с windows-1252 на windows-1251. Fixed: Подправлен путь до файла lua.hpp (lua/lua.hpp). Fixed: Файл luaerr.log переменён в папку logs. |
Nickolya, Jackson, Otshelnik-Fm, ExC0tiC, KT315, Sekretchik, Saymon21, Dimon21, LEXSOR | ||
15.1.2011, 10:53 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Спасибо. Исправлю этот баг. Что касается параметров WebID, то можно получать параметры: UID, sIP, sIPConn, iPort, iPortConn, iEnterTime |
Nickolya | ||
11.1.2011, 20:21 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
хехе. Да да, я не клавишей ошибся, я языком ошибся. Написал как в с++ |
Sekretchik | ||
11.1.2011, 15:51 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
У меня всё правильно написано. Если Код if #sMsg != 0 then то отправляй, иначе пиши, что "не отправляю пустые сообщения" |
Sekretchik | ||
11.1.2011, 10:24 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Ещё один момент. Чтобы каждый раз не формировать строку с командами, лучше вынести её за предел функции: Код local sUserCommand = "$UserCommand 1 1 "..sMenu..UID.sNick.." • :::\\::: Сообщения • "..sHubName.." • :::\\::: Для Администрации :::$<%[mynick]> +opmess %[line:Введите текст сообщения]||".. "$UserCommand 1 1 "..sMenu..UID.sNick.." • :::\\::: Сообщения • "..sHubName.." • :::\\::: Для Всех Юзеров :::$<%[mynick]> +massmes %[line:Введите текст сообщения]||".. "$UserCommand 1 1 "..sMenu..UID.sNick.." • :::\\::: Сообщения • "..sHubName.." • :::\\::: Для Юзера от Бота :::$<%[mynick]> +frombot %[line:Ник] %[line:Введите текст сообщения]||".. "$UserCommand 1 2 "..sMenu..UID.sNick.." • :::\\::: Сообщить этому Юзеру :::$<%[mynick]> +frombot %[nick] %[line:Введите текст сообщения]|" function OnUserEnter(UID) if tAccess[UID.iProfile] == 1 then Core.SendToUser(UID, sUserCommand) end end А функция OnChat опять написана плохо. Зачем опять второе регулярное выражение? Код local fbm = sData:match"^%b<>%s+%p%S+%s+(.+)" Да и первое регулярное выражение немного по-другому должны быть написано: Код function OnChat(UID, sData) local sCmd, sArg = sData:match"^%b<> [%+!/](%S+)%s*(.*)$" if sCmd then if sCmd == "massmes" then if tAccess[UID.iProfile] == 1 then if #sArg == 0 then Core.SendToUser(UID, " *** Извините, пустые сообщения не отправляю. Попробуйте ещё раз.", sBot) else Core.SendToProfile({0, 1, 2, 3, -1}, "\r\n\r\n\t *** СООБЩЕНИЕ ДЛЯ ВСЕХ ***\r\n\r\n\t • "..sArg.." •\r\n", sBot, sBot) Core.SendToUser(UID, " *** Ваше сообщение • ДЛЯ ВСЕХ • успешно отправлено.", sBot) end else Core.SendToUser(UID, " *** У вас недостаточно прав для выполнения этой команды!", sBot) end return true elseif sCmd == "opmess" then if tAccess[UID.iProfile] == 1 then if #sArg == 0 then Core.SendToUser(UID, " *** Извините, пустые сообщения не отправляю. Попробуйте ещё раз.", sBot) else Core.SendToProfile({0,1}, "\r\n\r\n\t *** СООБЩЕНИЕ ДЛЯ АДМИНИСТРАЦИИ ***\r\n\r\n\t • "..sArg.." •\r\n", sBot, sBot) Core.SendToUser(UID, " *** Ваше сообщение • ДЛЯ АДМИНИСТРАЦИИ • успешно отправлено.", sBot) end else Core.SendToUser(UID, " *** У вас недостаточно прав для выполнения этой команды!", sBot) end return true elseif sCmd == "frombot" then if tAccess[UID.iProfile] == 1 then local sNick, sMsg = sArg:match"^(%S+)%s*(.*)" if sNick then if #sMsg ~= 0 then local tUser = Core.GetUser(sNick) if tUser then Core.SendToUser(tUser, "\r\n\r\n\t *** ВАМ ПЕРСОНАЛЬНОЕ СООБЩЕНИЕ ***\r\n\r\n\t • "..sMsg.." •\r\n", sBot, sBot) Core.SendToUser(UID, " *** Ваше сообщение для • "..sNick.." • от имени • "..sBot.." • успешно отправлено.", sBot ) else Core.SendToUser(UID, " *** Ошибка: Юзер • "..sNick.." • на хабе не найден!", sBot) end else Core.SendToUser(UID, " *** Извините, пустые сообщения не отправляю. Попробуйте ещё раз.", sBot) end else Core.SendToUser(UID, " *** Не введён ник. Попробуйте ещё раз.", sBot) end else Core.SendToUser(UID, " *** У вас недостаточно прав для выполнения этой команды!", sBot) end return true end end end |
Sekretchik, Saymon21 | ||
10.1.2011, 18:38 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Код local sBot = Config.sHubBot local sNick = "ник" Core.SendToUser(sNick, "Привет", sBot) |
Sekretchik, мамин_парень | ||
9.1.2011, 18:11 |
Несколько Слов О Захватах И Регулярных Выражениях исключительно для разработчиков |
Дело в том, что в регулярке lua, в отличие от перловской регулярки, нету знака "или", который обозначается в перле пайпом - "|". Что касается указанного примера: Код "лож[е]?[ч]?ка" то тут можно обойтись и без символьных классов:Код "ложе?ч?ка" |
Ksan, Serx | ||
9.1.2011, 17:57 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Лучше не вызывать функцию Core.SendToUser несколько раз, а сформировать строку полностью (разделяя команды знаком | ) и вызвать её 1 раз. Код function OnUserEnter(UID) if tAccess[UID.iProfile] == 1 then Core.SendToUser(UID, "$UserCommand 1 1 "..sMenu..UID.sNick.." • :::\\::: Сообщения • "..sHubName.." • :::\\::: Для Администрации :::$<%[mynick]> "..sPreff.."opmess %[line:Введите текст сообщения]||".. "$UserCommand 1 1 "..sMenu..UID.sNick.." • :::\\::: Сообщения • "..sHubName.." • :::\\::: Для Всех Юзеров :::$<%[mynick]> "..sPreff.."massmes %[line:Введите текст сообщения]|") --Core.SendToUser(UID,"$UserCommand 1 2 "..sMenu..UID.sNick.." • :::\\::: Сообщение от имени бота :::$<%[mynick]> "..sPreff.."frombot %[nick] %[line:Введите текст сообщения]|") end end Смысл конструкции ("%s"):format(sMsg) не понятен. А вот это: Код local _,_, sCmd = sData:find"^%b<>%s+%p(%S+)" -- ищем команду можно объединить в одну конструкцию.local _,_, sMsg = sData:find"%b<>%s+%S+%s+(.+)" Возвращаемым значением return true лучше тоже не загромождать код, а написать его в конце логического выражения. В итоге получаем: Код function OnChat(UID, sData) -- сообщение в чат local sCmd, sMsg = sData:match"^%b<>%s+%p(%S+)%s*(.*)" -- ищем команду if sCmd then if sCmd == "massmes" then if tAccess[UID.iProfile] == 1 then if #sMsg == 0 then Core.SendToUser(UID, "*** Извините, пустые сообщения не отправляю. Попробуйте ещё раз.", sBot) else Core.SendToProfile({0, 1, 2, 3, -1}, "\r\n\r\n\t *** СООБЩЕНИЕ ДЛЯ ВСЕХ ***\r\n\r\n\t • "..sMsg.." •\r\n", sBot, sBot) Core.SendToUser(UID, "*** Ваше сообщение • ДЛЯ ВСЕХ • успешно отправлено.", sBot) end else Core.SendToUser(UID, " *** У вас недостаточно прав для выполнения этой команды!", sBot) end return true elseif sCmd == "opmess" then if tAccess[UID.iProfile] == 1 then if #sMsg == 0 then Core.SendToUser(UID, "*** Извините, пустые сообщения не отправляю. Попробуйте ещё раз.", sBot) else Core.SendToProfile({0,1}, "\r\n\r\n\t *** СООБЩЕНИЕ ДЛЯ АДМИНИСТРАЦИИ ***\r\n\r\n\t • "..sMsg.." •\r\n", sBot, sBot) Core.SendToUser(UID, "*** Ваше сообщение • ДЛЯ АДМИНИСТРАЦИИ • успешно отправлено.", sBot) end else Core.SendToUser(UID, "*** У вас недостаточно прав для выполнения этой команды!", sBot) end return true end end end |
Sekretchik, Saymon21 | ||
9.1.2011, 13:58 |
Несколько Слов О Захватах И Регулярных Выражениях исключительно для разработчиков |
Квадратные скобки обозначают так называемые символьные класса. Это означает, что на данном месте может стоять любой из символом, который указан в символьном классе. В символьном классе возможно задать диапазоны символов: [А-Яа-я]. Так выглядит диапазон всех русских букв за исключением Ё и ё. Что касается плюсика, то к символьному классу можно его применять. Код local s="baaabbbababbbaaaaab bababbbababbabbabbab" print(s:match"([ab]+)") -- Результат: baaabbbababbbaaaaab |
Nickolya, Serx | ||
7.1.2011, 12:21 |
Несколько Слов О Захватах И Регулярных Выражениях исключительно для разработчиков |
Код local sDescription, sTag = sDesc:match'^(.*)(<.*>)$' if not sDescription then sDescription = sDesc sTag = '' end |
Sekretchik | ||
7.1.2011, 1:48 |
Несколько Слов О Захватах И Регулярных Выражениях исключительно для разработчиков |
Не знаю зачем парсить это руками, когда обычно хаб парсит это дело, однако вот решение: Код local sNick, sDesc, sSpeed, sEmail, iShare = tUser.sMyINFO:match"%$MyINFO %$ALL (%S+)%s+(.-)%$ %$(.-)%$(.-)%$(%d+)%$" |
Sekretchik | ||
6.1.2011, 23:14 |
AntiPornoSearch Блокирует поиск по прописанным в скрипте словам |
Вместо функции SearchArrival нужно написать функцию OnSearch вот так: Код function OnSearch(tUser, sData) if tProfiles[tUser.iProfile] ~= 1 then local seach = sData:match"$Search .-%s%u%p%u%p%d%p%d+%p(%S+)" if seach and (tExceptions[String2Lower(seach)] == 1) then return true end end end |
Nickolya, Otshelnik-Fm, ramzes | ||
6.1.2011, 15:32 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Всё правильно. Вот в чём загвоздка... При поиске ты указал ник бота, следовательно результаты поиска будут приходить на ник бота, а хаб пытается найти по нику пользователя, а бот не является пользователем. |
Nickolya | ||
6.1.2011, 13:25 |
Вопросы по RusHub Технические вопросы |
Если хаб онлайн, а хаб лист показывает его как оффлайн, то это проблемы в хаблисте а не в хабе по поводу отключения проверок смотри двумя постами выше Список всех настроек написан тут: http://mydc.ru/topic2378.html Список всех настроек можно также получить скриптом: Код for _, v in ipairs(Config.table()) do Core.SendToAll(v.." = "..Config[v]) end |
Invisible, Sekretchik | ||
6.1.2011, 12:18 |
ChatHistorySQL История чата (MySQL) |
функция lua_getfield будет в луа плагине только при статической линковке либы lua.a с луа плагином при сборке, а я так полагаю, что у вас lua линкуется как shared lib, поэтому не может идти речи о том чтобы луа плагин содержал функцию lua_getfield. Поэтому нужно либо собирать луа плагин со статической линковкой lua, либо пересобирать либу mysql.so, подстраивая её под shared lib |
Nickolya | ||
2.1.2011, 19:16 |
С Новым Годом! см название темы |
С новым годом!!! |
Nickolya, Sekretchik | ||
2.1.2011, 19:11 |
От: luasocket От темы с ID: 2951 |
Эм... это наверное мои тестовые записи написаны. Пардон Перезалил |
Nickolya, Invisible, Saymon21 | ||
2.1.2011, 18:53 |
Вопросы по RusHub Технические вопросы |
Настройки (1 - проверять, 0 - не проверять): bCheckSRNick - проверять ник в $SR команде bCheckRctmNick - проверять ли ник в RCTM команде bCheckCTMIp - проверять ip в CTM команде bCheckSearchIp - проверять ip при активном поиске |
Nickolya, Infinity_Love | ||
31.12.2010, 13:42 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
В общем буду разбираться |
Saymon21 | ||
31.12.2010, 13:15 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Вот из-за чего падает хаб: Цитата Сборщик мусора обрабатывает все объекты Lua: таблицы, данные типа userdata, функции, потоки и строки. Lua пытается сборщиком мусора удалить объект userdata. Подозреваю, что происходит это при использовании скрипта банов (функции GetGVal / SetGVal). В новом году буду разбираться как это обойти |
Nickolya, Saymon21 | ||
29.12.2010, 18:03 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Повторяю, что баг в луа, а не в хабе. Хаб падает потому, что луа интерпретатор работает из-под процесса хаба. Баг возникает при попытке убрать мусор при закрытии луа состояния (остановка скрипта). |
Nickolya | ||
29.12.2010, 15:08 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Баг ни хаба, и ни плагина. Это баг в lua. По всей видимости в версии lua 5.1.4 он пофикшен (я уже не говорю о версии 5.2): |
Saymon21 | ||
27.12.2010, 23:11 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Перезалил хаб, увеличив глубину стека. |
Nickolya, Saymon21 | ||
27.12.2010, 22:49 |
Модули для скриптов RusHub |
Спасибо. Исправил и перезалил |
Sekretchik | ||
27.12.2010, 8:07 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
О ужас. Я думал 30 строк стека будет достаточно. Оказалось это слишком мало. В данном стеке вызовов только функции lua интерпретатора, и я не могу сказать из-за чего был крах. Нужно будет увеличить чисто строк стека на порядки. |
Nickolya, Saymon21 | ||
26.12.2010, 21:58 |
Скрипт банов для RusHub тестим и комменьтруем |
Как это не вылетает? У меня все вылетают. Даже по несколько человек (если бан по ip). |
Артём | ||
26.12.2010, 21:53 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.13 lua plugin v 1.32 Added: В windows добавлен отлов всех исключений с трейсом. Теперь после "падения хаба" (хаб теперь не падает, а программа просто закрывается) создаётся файл exception.txt, который содержит информацию о проблеме. Для полноценной информации нужно чтобы файлы с символами rushub.pdb и lua.pdb лежали рядом с rushub.exe. Возможно этого не всегда будет достаточно, и могут потребоваться символы системных либ, однако хотя бы так. Fixed: Исправлен баг в метатаблице UID (рекурсивный вызов). |
Nickolya, mariner, ShadoWx, Infinity_Love, ExC0tiC, KT315, Sekretchik, Saymon21 | ||
26.12.2010, 12:48 |
Скрипт банов для RusHub тестим и комменьтруем |
Привёл к человеческому виду скрипт. Все остальные скрипты в теме удалил. |
Nickolya, Артём, Herurg, Accelerator, Sekretchik, Saymon21 | ||
25.12.2010, 11:21 |
Перебор файлов в каталоге |
Ну тут скорее не в изменённости lua дело. 1. Lua интерпретатор птохи находится в файле pxlua.dll, соответственно, библиотека lfs должна быть статически прилинкована к pxlua.dll. Библиотеки, взятые с luaforge, линкуются к lua51.dll. Поэтому первый фактор - это разные имена либ с интерпретаторами lua. 2. Птоха собрана компиляором borland, а либы с luaforge компилятором vs (visual studio). Либы borland не совместимы с либами vs, ибо либы borland имеют формат omf, а либы vs формат coff. |
Nickolya | ||
22.12.2010, 23:25 |
Фильтр чата. ChatFilter Версия 1.0 | Замена мата или рекламы на разные фразы. |
перевод делается изменением 2 строк: ChatArrival - заменить на OnChat Core.GetUserAllData(curUser) - удалить |
Infinity_Love | ||
19.12.2010, 20:09 |
Hideme скрипт скрытия в юзер-листе |
Подправил скрипт. Вроде теперь работает всё как часы |
Saymon21, мамин_парень | ||
19.12.2010, 20:08 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.12 lua plugin v 1.31 Fixed: Починен параметр bHide (сломался после введения общего кэша). Fixed: Поправлены права на создание папок в линуксе. Fixed: Исправлены пути lua модулей для линукса. Fixed: Починены метатаблицы объектов Config и UID. Added: Введено дополнительное логирование и отлов исключений в windows |
Nickolya, mariner, Otshelnik-Fm, PomanoB, Infinity_Love, ExC0tiC, KT315, Sekretchik, Saymon21 | ||
19.12.2010, 15:22 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Вообще-то оператор '#' соответствует функции table.getn, а не table.maxn. Поэтому такая замена возможна, но далеко не во всех случаях. В данном конкретном случае конечно же лучше использовать оператор '#', а не функцию table.maxn. |
Nickolya, Sekretchik, Saymon21 | ||
19.12.2010, 11:08 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
С lua плагином идут файлы lua, из которых нужно взять файл luaconf.h и с ним собирать lua, в противном случае, используются стандартные пути Есть некоторая идея как заставить это работать без каких-либо манипуляций. Но это может быть будет сделано в очередной версии lua плагина |
Kingston | ||
18.12.2010, 18:01 |
Мелкие вопросы |
да |
Sekretchik | ||
17.12.2010, 17:36 |
'Действия' для RusHub Скрипт 'Действия' с большим набором ситуаций |
Ужасный код. Вот подредактировал: Код function OnChat(UID, sData) -- сообщение в чат local sCmd, sMsg = sData:match"%b<>%s(%S+)%s(.+)" -- ищем команду if sCmd == "!me" then if tProfiles[UID.iProfile] == 0 then local sRep = ("="):rep(54) local sMsg = "\r\n\r\n".. "\t"..sRep.."\r\n".. "\tУ вас недостаточно прав для выполнения этой команды.\r\n".. "\t"..sRep.."\r\n" Core.SendToUser(UID.sNick, sMsg, sBot) else Core.SendToAll("**** "..UID.sNick.." - "..sMsg.." ****", sBot) end return true end end А выражение Цитата sMsg = string.sub(sMsg, 1, string.len(sMsg) - 0) просто убило. Мало того, что оно из строки sMsg выбирает саму себя так ещё и необязательный аргумент со взятием длины написан и зачем-то вычитается 0. |
Sekretchik | ||
12.12.2010, 21:58 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.11 lua plugin v 1.30 Added: Добавлено логирование в веб сервере Added: Некоторый рефакторинг. Added: Сделана папка под логи Fixed: Починено взаимодействие между хабом и плагинами (передача векторов между хабом и плагинами) |
Nickolya, mariner, Infinity_Love, ExC0tiC, KT315, Saymon21, X-Sky | ||
11.12.2010, 15:39 |
Статистика файлобмена Нужен скрипт |
Скачка не идёт, однако, современные клиенты при скачивании активно ищут альтернативные источники, и на этом уже можно определить время скачивания того или иного файла (время между поисками альтернатив), а если иметь базу TTH, то узная размер скачиваемого, можно в принципе вычислить скорость. Однако, данный способ определения является достаточно приближенным и для конкретного хаба такая статистика может не отражать суть ситуации на хабе, ибо скачивающий пользователь может использовать мульти-скачку и тянуть этот файл сразу с нескольких хабов. |
™Wizard™, мамин_парень | ||
9.12.2010, 9:47 |
От: Scripts От темы с ID: 3767 |
А для чего сохранение по таймеру? Ведь это не птоха, которая не сохраняет. Файл scripts.xml сохраняется при запуске или остановке скрипта, причём если в каком-то событии запускается, останавливается или перезапускается несколько скриптов, то сохранение выполнится 1 раз, а не столько раз, сколько действий. То есть своеобразный внутренний таймер, но намного круче. Поэтому использовать в скриптах сохранение по таймеру - это лишнее действие в русхабе. |
Saymon21, X-Sky | ||
7.12.2010, 13:44 |
Вопросы по RusHub Технические вопросы |
philoum, i corrected my script. Try Saymon, всё правильно ведь хаб слушает 0.0.0.0 и не знает какие там у тебя внешние ip адреса На какой прослушиваемый ip адрес поступит пользователь, такой ip и будет в параметре sIPConn. В данном случае слушается 0.0.0.0, поэтому он и записан в параметр. |
Saymon21 | ||
5.12.2010, 23:32 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.10 lua plugin v 1.29 Added: Добавлена возможность логирования в syslog. Added: Добавлены в пинг стандартные функции антифлуда. Added: Добавлена шара в приветственное сообщение. Added: Введены причины дисконнекта. Added: Сделана возможность показа ip (хоста) сервера, к которому коннектился пользователь (UID.sIPConn). Added: Добавлена функция Core.Redirect(UID/sNick, sAddress[, sReason]). Причину указывать не обязательно. Added: Дабавлен параметр юзера UID.bKick. Установка этого параметра в true даёт право ОПератору кикать других юзеров Added: Дабавлен параметр юзера UID.bRedirect. Установка этого параметра в true даёт право ОПератору перенаправлять других юзеров Fixed: Исправлен баг удаления открытых соединений при использовании poll в линуксе. Fixed: Починен входящий пинг. Fixed: Оптимизирована работа парсера. Fixed: Оптимизировано приветственное сообщение, сделан его кеш и убраны секунды. Fixed: Загнан интерфейсы для плагинов в один файл для удобства использования сторонними разработчиками. P.S. В случае обновления хаба рекомендуется удалить старый файл lang.xml для того чтобы изменилось приветственное сообщение |
Nickolya, mariner, PomanoB, ExC0tiC, KT315, Alexey, Saymon21, X-Sky | ||
4.12.2010, 16:13 |
RusRC Графический интерфейс для управления RusHub'ом |
Nickolya, KT315, Saymon21 | |||
4.12.2010, 10:58 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Да действительно есть такой баг. Однако он встречается достаточно редко. Возникает он когда клиент отсылает с командой пинга ещё какую-нибудь команду. Починю в следующей версии. |
Nickolya, Saymon21 | ||
2.12.2010, 9:50 |
Вопросы по RusHub Технические вопросы |
New rushub has a new setting "sAddresses". Example of the use: Код <Item Name="sAddresses">0.0.0.0:411 0.0.0.0:413 192.168.0.1:4111 dc.hub.com:412</Item> Now you can specify different listening ports and different ip addresses (hosts) |
DEN 007 | ||
28.11.2010, 22:50 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.9 lua plugin v 1.28 Added: Сделан параметр настроек для дополнительных ip:port. Вместо настроек: sHubIP, iMainPort и sSubPorts теперь одна настройка sAddresses, в которой можно через пробел писать ip адреса (или хост-адреса) и через двоеточие различные порты. Если порт не указан явно, то берётся порт по умолчанию 411. Пример: Код <Item Name="sAddresses">dc.hub.ru:413 127.0.0.1 192.168.0.1:4111</Item> Added: В lua плагине сделана функция, возвращающая список всех возможных настроек хаба: Config.table() - функция возвращает таблицу с названиями настроек. Таким образом, теперь можно написать простейший обход настроек хаба: Код for _, v in ipairs(Config.table()) do print(v, Config[v]) end Added: Сделана поддержка команды $MCTo. В lua плагине за эту команду отвечает событие OnMCTo. Added: Сделана возможность остановки windows сервиса (подробности в команде -h). Added: Сделано формирование логов по дате запуска хаба. Fixed: Пересмотрена политика занятости ника (была актуальная проблема для unix систем - висели "мёртвые" соединения). Fixed: Сделан рефакторинг кода. Fixed: Сделана проверка внутренней версии плагина и запись в лог сообщения о не поддерживаемой версии плагина. |
Nickolya, mariner, PomanoB, ExC0tiC, KT315, Saymon21 | ||
22.11.2010, 23:20 |
RusRC Графический интерфейс для управления RusHub'ом |
нужно проверить на новой версии, если будет тоже самое, будем разбираться |
KT315 | ||
22.11.2010, 22:55 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.8 lua plugin v 1.27 Added: Сделан пинг при проверке занятого ника Fixed: Устранен баг в функции Core.RegBot (появился в версии 2.2.7 из-за добавления параметров логирования) Fixed: Поправлен luaconf.h (не работал луа плагин в линуксе из-за некорректности этого файла, если сборка была с этим (модифицированным) файлом) Fixed: Поправлен путь к папке libs (смена корневой директории для линукса) Fixed: Поправлен путь для файла luaerr.log в lua плагине (сделать абсолютный путь вместо относительного) |
Nickolya, mariner, PomanoB, ExC0tiC, Saymon21, Sorrow | ||
21.11.2010, 19:06 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.7 Added: Сделан таймерный кэш для массовой рассылки (оптимизация обходов списка, актуальная на больших хабах). Added: Сделан параметр настроек "глобальное ограничение общего числа пользователей". Added: Наконец-то добавлена возможность установки сервиса/демона (проблема с установкой директории для конфигурационных файлов в windows решена). Для показа помощи по доступным командам вводим в консоли: rushub.exe -h (набор команд для window и для linux несколько различается). Added: Добавлено логирование изменения уровня нагрузки на хаб. Fixed: Изменена кодировка по умолчанию для файла настроек с windows-1252 на windows-1251. Fixed: Оптимизирована аллокация при конкатенации протокольных команд. Fixed: Закрыта незначительная утечка в памяти (проявлялась при удалении бота). |
Nickolya, PomanoB, Infinity_Love, ExC0tiC, Alexey, Saymon21 | ||
19.11.2010, 13:26 |
Несколько Слов О Захватах И Регулярных Выражениях исключительно для разработчиков |
Может на реальном примере поймёшь, раз на словах не понимаешь: Код local s = "123/456/789/0" print(s:match"/(.*)/") --> "456/789" print(s:match"/(.-)/") --> "456" |
Ksan, dimajak | ||
12.11.2010, 13:48 |
Action RusHub |
А зачем там вообще бот? Переменная sBot нигде не используется в скрипте, спрашивается зачем оно нам нужно?))) -------------------- Кстати небольшая особенность: событие OnConfigChange работает только при изменении настроек при помощи Config объекта. Отсюда получаем, что если нам не нужно чтобы настройка попала в событие OnConfigChange, то юзаем Core.SetConfig, иначе юзаем объект Config. |
Saymon21 | ||
27.10.2010, 22:02 |
Easy OPChat Скрипт реализующий простой ОП чат |
Все функции отсылки добавляют. Поэтому про разделитель в принципе можно забыть. Разделитель нужен только если отсылать за раз несколько команд, то есть пихать в функцию отсылки строку из нескольких команд |
Saymon21 | ||
27.10.2010, 21:58 |
Easy OPChat Скрипт реализующий простой ОП чат |
А зачем ты добавляешь в конец разделитель | ? Ведь он автоматически будет прибавляться если его нету |
Saymon21 | ||
24.10.2010, 19:44 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.6 lua plugin v 1.26 Added: Сделан poll для линукса Added: Сделана настройка включения определения mac адреса (по умолчанию отключено) Added: Добавлено событие OnConfigChange, которое выполняется при изменении какой-либо настройки хаба. Это даст возможность скриптописателю хранить настройки в локальных переменных, а при изменении настроек перезаписывать данные в переменных, а не дергать каждый раз функции. Added: Добавлена lua api функцию Core.SetHubState(iNum) - установка состояния хаба. iNum = nil или iNum = 0 - остановка хаба. iNum = 1 - рестарт хаба. Остальные значения заразервированы на будущее Fixed: Убрано логирование и остановка хаба при ошибке в Choose Fixed: Доработано автоматическое действие при смене настроек: sHubBot и bRegMainBot |
Nickolya, ShadoWx, PomanoB, ExC0tiC, CrazyKiller, Saymon21 | ||
24.10.2010, 19:33 |
Скрипт банов для RusHub тестим и комменьтруем |
В функцию UnbanUser в файле Ban.lua добавил строчку: Код return nil, "Юзер не был забанен." Это должно исправить ошибку. Честно говоря мне и самому не очень нравится данный модуль банов |
Saymon21 | ||
23.10.2010, 20:36 |
Предложения для развития |
По-моему чистыми скриптами всё это сделать легче, чем огород городить |
Saymon21 | ||
23.10.2010, 14:10 |
Предложения для развития |
Ок. Добавлю. |
Saymon21 | ||
22.10.2010, 9:16 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Да, действительно, есть такое дело. Это происходит вот из-за чего: Код (error)[Fri Oct 22 00:42:56 2010|831] (0) cDCServer: Error in Choose function: 10038 Для того чтобы отлаживать poll я добавил логирование ошибки для функции Choose (которая вызывает либо poll, либо select) и сделал принудительную остановку хаба в случае наличия ошибки. Если порт уже занят, то как раз и возникает ошибка в функции Choose (в функции select). Так как poll уже реализован и отлажен, то в следующей версии уберу логирование и остановку, то есть верну старый функционал (записал себе в TODO) |
Nickolya, Saymon21 | ||
19.10.2010, 9:24 |
Скрипт банов для RusHub тестим и комменьтруем |
действительно бредятина какая-то была написана подправил |
Saymon21 | ||
8.10.2010, 14:08 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Цитата Для выполнения запроса эта функция перебирает все индексы таблицы. Именно поэтому, если в таблице только целочисленные индексы (с дырами или без), то лучше использовать цикл: Код for k, v in pairs(tTable) do ... end а не цикл: Код for i = 1, table.maxn(tTable) do ... end Так как в последнем случае мы фактически пробегаемся по циклу 2 раза. |
Saymon21 | ||
7.10.2010, 13:33 |
DiapasonGag тихая заглушка по диапазону (удобно против динамич. IP) |
А попробовать самому подвигать и потестировать руки не позволяют? |
Dimon21 | ||
5.10.2010, 21:42 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.5 Added: Добавлены миллисекунды в логе Fixed: Исправлен баг в счётчике закрытых соединений, который сильно влиял на производительность Fixed: Проведена оптимизация основного цикла |
Nickolya, PomanoB, ExC0tiC, Saymon21 | ||
5.10.2010, 7:16 |
Модуль GeoCity Определяем местоположение по IP с точностью до города |
а собственно в чем проблема то? [attachment=5075:locations.rar] |
alex82 | ||
4.10.2010, 9:13 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Код for i,v in ipairs(TableN) do if v == name then // ... end end Однако лучше сделать другую структуру таблицы: Код local TableN = { в этом случае не нужен будет цикл:["Ник1"] = true, ["Ник2"] = true, ["Ник3"] = true, } Код if TableN[name] then // ... end |
Saymon21 | ||
23.9.2010, 10:09 |
Способы Повышения Производительности методы оптимизации lua кода |
Частое действие в скриптах - это проверка сообщения чата на ввод пользователем какой-либо команды. Практически в каждом скрипте делается данная проверка. Данное действие должно быть максимально оптимизировано. Наиболее оптимизированный вариант: Код function ChatArrival(tUser, sData) local iPos = #tUser.sNick + 4 if sData:sub(iPos, iPos):find('!', 1, true) then --поиск префикса команды -- дальнейшие действия (в том числе поиск и сравнение команд) end end В чём преимущество? В таком использовании метод find работает очень эффективно, так как, во-первых, регулярные выражения отключены, во-вторых, строки сравниваются блоками в памяти (такое сравнение практически мгновенное). Представим на мгновение что поиск команд осуществляется каждый раз, когда мы пишем сообщение в чат, да ещё и не один раз, а столько раз, в скольких скриптах используются команды. Предложенный вариант поиска основан на поиске единого префикса команд, ведь команды юзаются пользователями относительно редко, а сообщения чата практически никогда не начинаются с указанного префикса. Применяя предложенный вариант в своих скриптах, мы по максимуму оптимизируем события чата |
Nickolya, Invisible, PomanoB, Alexey, Saymon21, MIKHAIL | ||
14.9.2010, 13:41 |
Чат Комнаты API2 | Возможно создать несколько чат комнат |
Код ["sMsgEnter"] = [[много много очень много строк]], |
VNoName | ||
12.9.2010, 21:28 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.4 lua plugin v 1.25 Added: Добавлен параметр пользователя: время входа (iEnterTime - время отсылки клиентом на хаб команды $Key) Added: Добавлен отдельный объект для получения настроек в глобальном окружении Lua: Config. Например, имя бота можно теперь получить так: Config.sHubBot Fixed: Исправлено падение при удалении папки scripts в Lua плагине Fixed: Перепроверены все возможные "массовые" события Fixed: Поправлена регистрация бота с недопустимыми символами в нике. Fixed: Подправлен файл luaconf.h в Lua плагине для unix. Добавлена возможность поиска модулей в папке libs Fixed: Поправлен баг в событии OnValidateNick (возвращаемое значение) Fixed: Оптимизирована функция изменения размера хеш-таблицы (AutoResize) Fixed: Подправлены исходники под сборку на vs2010 Fixed: Оптимизированы некоторые функции хаба. В целях ускорения работы в настройках нужно поставить параметр iStepDelay = 0. Если хаб не нагружен, то обнуление данного параметра может вызвать некоторую нагрузку на процессор. |
Nickolya, Invisible, Артём, PomanoB, ExC0tiC, Saymon21 | ||
12.9.2010, 14:35 |
Ваши Вопросы И Предложения По Поводу Форума |
эм... а что предложенный мною вариант чем-то плох? Вроде ничего лучше придумать и нельзя. [attachment=5009:screen.png] Для lua конечно цвета нужно будет подправить, а так в принципе всё отлично смотрится. |
Invisible | ||
12.9.2010, 13:05 |
Ваши Вопросы И Предложения По Поводу Форума |
Вот изменения, которые нужно сделать чтобы прикрутить geshi на ipb 2.3.6: Я у себя на ipb 2.3.5 попробовал, и действительно работает Однако, там только для тэга codebox, но думаю, что для тэга code это также легко делается |
Invisible, Saymon21 | ||
31.8.2010, 17:21 |
Hub's Big Ass Bot API2 | HUBBABOT v.2.28 |
если скрипт из первого поста, то 71 строка: Код tRulesText = string.gsub(tRulesText, "%[ROLE%]", tCheck[sUser.iProfile][2]) нужно написать так: Код tRulesText = string.gsub(tRulesText, "%[ROLE%]", tCheck[sUser.iProfile] and tCheck[sUser.iProfile][2] or "unknown") |
OLGA | ||
31.8.2010, 12:15 |
Предложения для развития |
Реквестую аналог параметра птоки Сделаю.Код iLoginTime - User login time in seconds from 1.1.1970 Тогда уж и пусть запоминает и выдаёт даты максимальной шары (вместе с самой шарой) и максимального количества юзеров (вместе с самим количеством) за всё время работы РусХаба с первого включения и всё то же самое - за текущую сессию. Это планируется реализовать в пункте "Функция статистики и информации о сервере" TODOЭтого так сильно не хватало в Птоке. Есть предложение добавить новую функцию типа Core.AddCmd(sCmd, sFunc) Эта функция будет оптимизировать обработку команд, так как зачастую почти в каждом скрипте мы парсим команды в событии OnChat. При помощи этой функции можно будет добавлять команду и функцию, которая будет выполняться, если поступила данная команда. Наверное нужно сделать для каждого скрипта свой внутренний список, в который будут добавляться команды, и таким образом, команды с одинаковыми именами смогут существовать в различных скриптах и выполнять различные функции (при поступлении команды). Введя такую функцию предполагается снять нагрузку на обработку события OnChat. Пример: Код function OnStartup() Core.AddCmd("regme", "Regme") end function Regme(UID, tParams) local sPass = tParams[1] if sPass then AddReg(UID.sNick, sPass) end end function AddReg(sNick, sPass) ... end В данном примере в функцию Regme автоматически подставятся аргументы: UID пользователя и tParams - параметры команды По умолчанию я думаю зашить префиксы команд + и !, и возможно следует сделать функцию, которая будет менять или добавлять префиксы (я пока что ещё с этой идеей не переспал). Стоит ли это делать я на данный момент не знаю. |
Nickolya, mariner, Saymon21 | ||
22.8.2010, 15:04 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.3 Fixed: Исправлен баг (падение хаба), который возникал при дисконнекте пользователя, который находился в процессе получения списока пользователей хаба. Fixed: Исправлена задержка в отправке команд, которая составляла 0.1 - 1 сек. |
Nickolya, Invisible, ExC0tiC, BeN, Saymon21 | ||
21.8.2010, 22:08 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.2 Fixed: Исправлена ошибка в отправке данных при блокировке. Added: Добавлен кэш при массовой рассылке. |
Nickolya, Invisible, ExC0tiC, BeN, Saymon21 | ||
20.8.2010, 11:13 |
Скрипт запрета в никах заглавных букв |
Валидация отсутствует при QuickList |
Saymon21 | ||
16.8.2010, 15:20 |
Определение профиля получателя сообщения |
Код local tToUser = Core.GetUser(to) if tToUser then local iProfile = tProfiles[tToUser.iProfile] if iProfile and iProfile == 1 then ... end end |
Damaks | ||
7.8.2010, 19:20 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.1 lua plugin v 1.24 Fixed: Исправлена ошибка в таймерах. Fixed: Подкорректированы исходники под сборку на линуксе |
Nickolya, Invisible, PomanoB, ExC0tiC, BeN, Saymon21 | ||
3.8.2010, 9:01 |
С Днюхой Тебя! поздравления |
Присоединяюсь. Креативности креативному админу |
X-Sky | ||
31.7.2010, 12:52 |
Нужен скрипт ставящий люб приставку перед ником! Чтоб она везде отображался на хабе |
Префиксы для ников можно сделать только для отображения в чате. В юзер-листе изменить ник нельзя. Конечно если извратиться, то можно скрыть пользователя из юзер-листа командой $Quit, и вместо этого занести при помощи команды $MyINFO юзера с изменённым ником. Но в птохе нужно будет по таймеру скрывать постоянно старый ник, так как клиент время от времени отсылает на хаб MyINFO и хаб рассылает всем, поэтому скрытый ник может появится. Но сокрытие ника прибавит гемора, так как отсылка ПМ такому нику не будет доходить до пользователя, да и получить список файлов у такого пользователя будет нельзя. Я как-то, когда писал хаб, пытался попробовать изменить ник на стадии входа на хаб, но тут дело в том, что клиент отсылает на хаб свой ник в команде $ValidateNick [Ник] и надеется получить от хаба подтверждение командой $Hello [Ник], причём со своим ником, и пока клиент не получит команду $Hello со своим ником, он не будет ничего делать. Некоторые обходы этого есть в hex хабе, однако и hex хаб отсылает в команде $Hello реальный ник клиента и только после этого начинает манипулировать никами. |
van21 | ||
28.7.2010, 22:48 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.2.0 lua plugin v 1.23 Fixed: Исправлен баг в работе таймеров. Fixed: Переделаны алгоритмы работы таймеров и списков задач. Fixed: Установлено ограничение: максимум 100 таймеров / скрипт. При превышении ограничения скрипт отключается с добавлением ошибки в лог ошибок. Added: Функция AddTimer теперь возвращает количество зарегистрированных таймеров с указанными id (то есть добавлен контроль за числом таймеров в скрипте) - это если всё ок, если ошибка, то как и раньше nil и сообщение об ошибке. Added: Функция DelTimer теперь возвращает количество удалённых по id таймеров. Added: Оптимизированы некоторые процессы (в частности парсинг MyINFO и получение параметра объекта UID). |
Nickolya, Invisible, Otshelnik-Fm, ExC0tiC, Saymon21 | ||
28.7.2010, 19:16 |
HubTopic Скрипт показывающий ваш текст в строке состояния |
ну так замени | на | сколько раз уже натыкались на эти грабли?))) Код Core.SendToUser(UID,"$UserCommand 1 3 "..tCfg.Menu.."\\Установить тему$<%[mynick]> !хабтопик %[line:Введите тему чата]|") |
Otshelnik-Fm | ||
28.7.2010, 9:17 |
HubTopic Скрипт показывающий ваш текст в строке состояния |
Для смены топика можно использовать функцию: Код Core.SetConfig("sTopic", "Новый топик") Эта функция автоматически изменяет топик (приписку к имени хаба) в настройках и отправляет всем пользователям хаба команду $HubName с именем хаба и изменённым топиком, а новые пользователи при входе на хаб будут видеть уже изменённый топик. Кстати, для того, чтобы не отсылать контекстные менюшки при входе, а отсылать только по команде нужно писать так: Код function OnUserEnter(UID) if sHubTopic then Core.SendToUser(UID,"$HubTopic "..sHubTopic) end --ContextMenu(UID) end То есть НЕ вызывать функцию ContextMenu при входе. Функция ContextMenu будет автоматически вызываться скриптом ContextMenu при отсылке нужной команды. Вот это действительно будет экономия трафика и нагрузки. |
Nickolya, Saymon21 | ||
27.7.2010, 9:13 |
Мелкие вопросы |
Попробуй повыводить запросы к бд, и попробуй повыполнять запросы не через хаб, а например через phpMyAdmin. У меня сейчас посмотреть в чём проблема нет возможности. |
Saymon21 | ||
|
Сейчас: 23.11.2024, 1:01 |