Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
22.3.2011, 10:19 |
Библиотека mtime Windows only | Время в миллисекундах |
Написал небольшую библиотеку, позволяющую получать время с момента запуска системы в миллисекундах. Библиотека может быть полезна для оценки производительности кода. [attachment=5686:mtime.rar][attachment=5687:mtime_src.rar] Пример использования: Код require"mtime" print( mtime.get() ) |
Nickolya, Invisible, PomanoB, Milena, Saymon21, AltSide | ||
17.3.2011, 9:55 |
Хаблист BCETI.com |
Milena | |||
17.3.2011, 3:28 |
Хаблист BCETI.com |
Измененения в работе хаблиста: *Исправлены ошибки пингера, из-за которых некоторые вполне работоспособные хабы не пинговались. Особо одаренный хаб Eximius теперь также пингуется нормально. *Теперь при добавлении хаба производится полный пинг, благодаря чему хаб появляется в списке сразу после добавления. Появление хаба в XML-списках и обновление статистики происходит как и раньше - с небольшой задержкой. *Добавлены рекорды посещаемости и размера шары. |
Milena | ||
15.3.2011, 23:49 |
Хаблист BCETI.com |
Кроме того, в пингере, проверяющем хаб при добавлении, есть небольшой косяк, из-за которого некоторые вполне нормальные хабы отваливаются с такой ошибкой. Основной пингер уже исправил, скоро доберусь и до этого. |
Milena | ||
15.3.2011, 10:54 |
Создание динамических страниц с помощью Lua Пишем сайты на Lua |
Setuper Веб-сервер (во всяком случае Апач) не будет этим заниматься. От тупо отправит те заголовки, что передал ему скрипт, добавив в них заголовок с информацией о себе. При полном отсутствии заголовков он выкинет ошибку 500 и запишет "Premature end of script headers" в лог ошибок. Так что переложить всю работу на него не получится . Но можно автоматизировать этот процесс чтобы не возиться с составлением заголовков при написании каждой страницы. Как только решусь писать продолжение, напишу об этом. |
Milena | ||
15.3.2011, 4:11 |
Создание динамических страниц с помощью Lua Пишем сайты на Lua |
Бытует мнение, что для создания динамических сайтов на языке, отличном от php, необходимо убить уйму времени на написание соответствующего модуля для вебсервера, и извести метр нервов на сборку этого модуля с помощью кривого компилятора от фирмы "Майкрософт". Однако, это далеко не так - писать сайты можно на любом языке, для которого имеется консольный интерпретатор. Теоретически, можно написать сайт на Ассемблере, собрав полученную программу как консольное приложение. Законченные извращенцы могут попробовать сделать сайт на том мерзопакостном "языке программирования", что используется в командной строке Windows. Но сегодня мы не будем заниматься извращениями, и попробуем написать сайт на каком-нибудь более простом и понятном языке. А именно - на Lua. Для этого нам понадобятся:
Итак, начнем. Для начала откроем файл конфигурации Apache, и убедимся, что для директории, в которой будут лежать наши скрипты, разрешено управление конфигом при помощи файлов .htaccess: Код AllowOverride All Далее откроем эту директорию, создадим в ней файл .htaccess, и пропишем в нем 2 заклинания: Код Options +ExecCGI Эта директива разрешает выполнение CGI-скриптов в данной директории.Код AddHandler cgi-script .lua Эта директива сообщает Апачу о том, что файлы с расширением .lua являются CGI-скриптами.Теперь создадим в этой же директории файл test.lua, и пропишем в первой строке путь к интерпретатору Lua (здесь и далее предполагается, что интерпретатор установлен в директорию C:\Program Files\lua): Код #!C:\Program Files\lua\lua.exe Далее попробуем вывести в окно браузера какую-нибудь строчку. Для тех кто не в курсе поясню - общение между Апачем и CGI-приложением происходит через стандартные потоки. Для передачи данных Апачу используется stdout, а для получения тела сообщения CGI-приложением - stdin. Итак, пишем скрипт: Код io.write("Hello world!!!") Пытаемся открыть наш скрипт в браузере, и... получаем ошибку 500 .Судорожно лезем в лог ошибок апача в надежде выяснить причину ошибки, и видим там следующее: Цитата [Sun Mar 15 02:35:07 2011] [error] [client 127.0.0.1] Premature end of script headers: test.lua Замечаем в сообщении знакомое слово "headers". Долго-долго думаем, что бы это могло означать... Нервничаем, кусаем бутерброд, запиваем его пивом... И тут нас осеняет: "Эврика, блеать, мы же не отправили заголовки!". Исправляем наш скрипт: Код io.write("content-type: text/html\n\nHello world!!!") Запускаем скрипт, и видим в окне браузера заветную строчку: Цитата Hello world!!! Ура!!! Оно работает!!! Бутерброды съедены не зря, и пиво выпито не напрасно. Продолжение следует... |
Nickolya, Setuper, Invisible, PomanoB, KT315, Alexey, Milena, Saymon21, RAND(i)M, DEN 007, AltSide | ||
14.3.2011, 21:12 |
Хаблист BCETI.com |
при добавлении хаба выдало ошибку: пустая страница с надписью: Исправилpages/add.lua:68: LuaSQL: Error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's Hub','dreamshub.freeddns.com','87.249.195.56',411,'no comment',1300102794,'87.' at line 1 Цитата Не дано было сделать регу пользователя и позволить самому управлять настройками для своего хаба? Типа как ником пингера? У меня была мысля сделать это даже без регистрации - разрешать настройку параметров пингера если IP-адрес хаба совпадает с IP-адресом юзера, просматривающего страницу.Я реал задолбался наблюдать подобную херню. Обычный сборщик статы справится лучше, чем эти ваши пинги пингерами. Как дети малые, ей-богу, будто примеров мёртвых хаблистов мало. Цитата 3. Вопрос - в самом деле у большинства хабов, даже самых больших, ограничение по минимуму шары отсутствует, или это пингер пока не может определить? (а то только у 2 хабов стоит лимит) Если пингер не смог определить ограниченияя хаба, отображаются знаки вопроса, а надпись "неограничено" появляется только в том случае, когда параметр равен нулю. Однако надпись "неограничено" тоже мало о чем говорит, поскольку ограничения могут быть отключены в настройках хаба, и реализованы альтернативным способом - при помощи скрипта. |
Milena | ||
14.3.2011, 11:23 |
Хаблист BCETI.com |
Мы строили, строили и наконец построили. Ура! © Чебурашка Мой проект-долгострой, начатый еще во времена существования хаба Titan, и возобновившийся в рамках проекта BCETI.com, наконец вошел в стадию бета-тестирования, и стал доступен широкой публике. Попасть на хаблист можно по адресам Все пожелания, возмущения и негодования можно оставлять в этой теме, либо в теме хаблиста на форуме BCETI.com (которая будет создана чуть позже ). Часто задаваемые вопросы Как добавить свой хаб в хаблист? Очень просто - с помощью Если мой хаб имеет несколько адресов, и я добавлю в хаблист их все, то будет ли мой хаб отображаться на нескольких страницах? В хаблист встроен весьма продвинутый алгоритм проверки адреса, и у Вас навряд-ли получится добавить несколько адресов для одного хаба даже в том случае, когда на хаб ссылаются несколько доменов, и он работает на нескольких портах. Но даже если у Вам удастся это сделать, при следующем пинге все страницы будут перенаправлены на тот адрес, который был добавлен первым. Как поступит хаблист в случае слияния моего хаба с другим? При слиянии нескольких хабов, их страницы перенаправляются на страницу того хаба, который был добавлен раньше, а в таблице с информацией о хабе появляется поле "Дополнительные адреса", в котором перечисляются адреса всех перенаправленных хабов. При этом, страницы перенаправленных хабов не удаляются, и если Вы решите забрать свой домен, и снова запустить отдельный хаб, он будет отображаться по старому адресу. Заметил что на страницах некоторых хабов отображаются их логотипы, а в ссылке на страницу хаба используется имя вместо ID. Можете сделать так же для моего хаба? Можем. Для этого Вам необходимо предоставить логотип в формате PNG (желательно на белом или прозрачном фоне) размером не более 400x100 пикселей. Файл логотипа можно прикрепить в этой теме, либо отправить мне в личку, указав при этом ID хаба, либо ссылку на страницу хаба. Данная функция не предоставляется для хабов, существующих менее одного месяца. Логотипы, содержащие ненормативную лексику или изображения порнографического характера, либо выполненные в стиле "Унылое говно", не принимаются. Может ли мой хаб оказаться в списке "Рекомендуем посетить"? Если Ваш хаб работает круглосуточно, и по вечерам на нем собирается не менее 1000 юзеров, мы можем добавить Ваш хаб в список рекомендуемых. Взамен Вы должны разместить в сообщении дня ссылку на хаблист: Цитата Хаблист BCETI.com - На каком языке написан хаблист? Оба компонента хаблиста (Web-интерфейс и пингер) написаны на Lua Я хочу себе такой же хаблист. Где можно скачать этот движок? На данный момент движок хаблиста существует в единственном экземпляре, и я не планирую выкладывать его в публичный доступ. |
Nickolya, Setuper, Invisible, Ksan, Accelerator, Milena, Saymon21, TiGRpp, RAND(i)M, ProGeTTo, AfLc | ||
7.3.2011, 18:39 |
CustomLocations + MySQL Определяем провайдера по IP-адресу |
Написал небольшой скрипт для импорта базы данных CustomLocations в бд MySQL: [attachment=5659:customlocations.lua]Перед использованием необходимо создать базу данных и вписать в скрипт путь к директории CustomLocations. Скрипт для тестирования: [attachment=5660:cl_test.lua] |
Nickolya, Tsd, Invisible, PomanoB, Milena, PSIX, Saymon21, DEN 007, AltSide, OCTAGRAM | ||
5.3.2011, 18:13 |
StarWars API1 | API2 |
sexynapku [attachment=5645:StarWars.rar] Артём Оно действительно не работало если имя бота равно имени главного бота. И виноваты в этом кривые руки. Твои. Посмотри внимательно на функцию OnStartup. |
sexynapku | ||
28.2.2011, 23:20 |
Small DC HubList (Хаблист) Создай свой хаблист. CMS для создания хаблиста. |
Полагаю что коммерческая реклама может быть размещена только по согласованию с администрацией. Согласование было? |
мамин_парень | ||
25.2.2011, 22:21 |
Вопрос по доработке срипта StatPX как переделать... |
Blazer [attachment=5619:statpx.rar] На будущее: создавай запросы в теме скрипта. |
|||
20.2.2011, 23:16 |
Stupid Pass API2 | Удаление аккаунтов с небезопасными паролями |
Ksan Т.е. долбежка в личку с интервалом 10 минут - это и есть забота о нервах юзеров? Объясните почему нельзя пользователю при регистрации использовать тот пароль, к которому он привык, с ним сроднился, который уже в памяти у него и он не хочет менять его? Потому что на большинстве хабов регистрация не обязательна, и используется только для защиты от спама. А юзер с паролем 123456 - потенциальная дыра в этой самой защите.Я проще смотрю у себя на это и оставляю выбор за пользователем! Если юзер не в состоянии придумать себе пароль, пусть сидит незарегистрированным. На файлообмен это никак не повлияет. |
Milena | ||
20.2.2011, 21:02 |
Stupid Pass API2 | Удаление аккаунтов с небезопасными паролями |
Неплохо было бы добавить функцию... А зачем, собственно? Это одноразовый скрипт, который нужно использовать перед установкой того самого продвинутого скрипта регистрации.Цитата ...которая при заходе юзера с некондиционным паролем позволяет ему зайти, но сообщает ему в чате и привате, чтоб поменял пароль на отвечающий требованиям безопасности (показать примеры)...и неплохо бы этому же юзеру, пока не исправит пароль, донимать псьмами в личку от бота (с тем же содержанием)...например, через каждые 10 минут. Как-то все слишком сложно получается. Куда проще удалить все аккаунты с такими паролями. Они как правило не имеют никаких полномочий, и перерегистрировать их - дело одной минуты. |
Milena | ||
20.2.2011, 15:35 |
Stupid Pass API2 | Удаление аккаунтов с небезопасными паролями |
DEN 007 Разумнее. Только до установки продвинутого скрипта регистрации, таких паролей могло набраться выше крыши. Не удалять же их вручную. |
Milena | ||
20.2.2011, 12:48 |
Функции Для Разработчиков склад полезных функций |
Функция проверки пароля на безопасность: Код tSequence = { {"q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m",}, {"m", "n", "b", "v", "c", "x", "z", "l", "k", "j", "h", "g", "f", "d", "s", "a", "p", "o", "i", "u", "y", "t", "r", "e", "w", "q",}, {"й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю",}, {"ю", "б", "ь", "т", "и", "м", "с", "ч", "я", "э", "ж", "д", "л", "о", "р", "п", "а", "в", "ы", "ф", "ъ", "х", "з", "щ", "ш", "г", "н", "е", "к", "у", "ц", "й",}, {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0",}, {"0", "9", "8", "7", "6", "5", "4", "3", "2", "1",}, } function CheckPassword(pass) local passlen = #pass if passlen < 2 then return true end local tpass = {} for i = 1,passlen do table.insert(tpass,pass:sub(i,i)) end local success = false for i = 2,passlen do if tpass[i] ~= tpass[1] then success = true break end end if not success then return false, "Пароль не может состоять из одинаковых символов" end for i,v in ipairs(tSequence) do success = false local first for n,c in ipairs(v) do if c == tpass[1] then first = n break end end if first then for i = 2,passlen do first = first+1 if not v[first] or v[first] ~= tpass[i] then success = true break end end if not success then return false, "Пароль не может состоять из клавиатурных последовательностей (qwerty, 123456, и.т.д.)" end end end return true end Функция возвращает false и сообщене об ошибке, если пароль состоит из одинаковых символов или клавиатурной последовательности. В противном случае возвращает true. Обратите внимание: функция не приводит пароль к нижнему регистру. Вам необходимо сделать это самостоятельно перед вызовом функции. Пример использования функции |
Setuper, Saymon21 | ||
20.2.2011, 12:36 |
Stupid Pass API2 | Удаление аккаунтов с небезопасными паролями |
Stupid Pass Версия: 1.00 Версия API: API2 (PtokaX 0.4.0/0.4.1) Автор: alex82 Описание: Данный скрипт предназначен для удаления аккаунтов с небезопасными паролями. Небезопасными паролями считаются: * Пароли, совпадающие с ником [attachment=5605:StupidPass.rar] |
Invisible, Karumo, PomanoB, Kingston, Milena, Saymon21, Rei_Volia | ||
15.2.2011, 12:22 |
Luasocket win32 | Работа с сокетами |
Слегка модифицировал модули, отвечающие за отправку e-mail'ов по протоколу SMTP. Теперь можно отправлять письма через безопасные соединения. [attachment=5597:socket.rar] Пример использования: Код smtp.send{ Как видим, в таблице появился параметр secure, который включает использование безопасных соединений. Параметр может принимать следующие значения:from = "Blablabla <blablabla@mail.ru>", rcpt = "Some User <someuser@mail.ru>", source = smtp.message({headers = {['Content-Type'] = 'text/plain; charset="cp1251"',subject = "Test"},body = "Test message"}), user = "blablabla", password = "123456", server = "smtp.mail.ru", port = 465, secure = "sslv3", } Код sslv23 Если параметр отсутствует, отправка производится посредством обычного соединения.sslv3 tlsv1 Для нормальной работы модифицированных модулей требуется библиотека LuaSec |
Nickolya, PomanoB, Saymon21 | ||
18.1.2011, 2:07 |
Функции Для Разработчиков склад полезных функций |
Функция преобразования кодировки cp1251 в cp866, необходимая для правильного отображения символов кириллицы в консоли Windows: Код local CP866 = { [160] = 255, [161] = 246, [162] = 247, [164] = 253, [168] = 240, [170] = 242, [175] = 244, [176] = 248, [178] = 73, [179] = 105, [183] = 250, [184] = 241, [185] = 252, [186] = 243, [191] = 245, } function string.tooem(str) return (str:gsub("[Ђ-я]",function(c) c = c:byte() if c >= 192 and c <= 239 then return string.char(c-64) elseif c >= 240 then return string.char(c-16) elseif CP866[c] then return string.char(CP866[c]) else return "?" end end)) end |
Nickolya, Sekretchik, Saymon21 | ||
17.1.2011, 5:44 |
Функции Для Разработчиков склад полезных функций |
Оптимизированная функция Serialize: Код function Serialize(tTable, sTableName, hFile, sTab) sTab = sTab or "" hFile:write(sTab,sTableName," = {\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 Serialize(value, sKey, hFile, sTab.."\t") else hFile:write(sTab,"\t",sKey," = ",(type(value) == "string") and ("%q"):format(value) or tostring(value)) end hFile:write(",\n") end hFile:write(sTab,"}") end Функция, выводящая содержимое таблицы в консоль: Код function table.print(tTable, sTableName, sTab, bComma) Параметр sTableName указывать не обязательно. Параметры sTab и bComma используются при рекурсивном вызове функции. Следовательно, не нужно указывать их при вызове вручную.sTab = sTab or "" print(sTableName and sTab..sTableName.." = {" or sTab.."{") 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.print(value, sKey, sTab.."\t",true) else print(sTab.."\t"..sKey.." = "..((type(value) == "string") and ("%q"):format(value) or tostring(value))..",") end end print(sTab.."}"..(bComma and "," or "")) end |
Nickolya, Setuper, Alexey, Sekretchik, Saymon21 | ||
8.1.2011, 2:42 |
ChatAfterLoginLocker API2 | Доступ к чату после N минут онлайн |
Примерно так: Код tUsers = {} function UserConnected(user) tUsers[user.sNick] = os.time() end RegConnected = UserConnected function UserDisconnected(user) tUsers[user.sNick] = nil end RegDisconnected = UserDisconnected function ChatArrival(user) if tUsers[user.sNick] and tUsers[user.sNick] > os.time()-600 then Core.SendToUser(user,"<"..SetMan.GetString(21).."> В данный момент Вы не можете отправлять сообщения в чат. Пожалуйста подождите.") return true end end |
Nickolya, мамин_парень | ||
5.1.2011, 18:54 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
-slava- Открыть mainstat.tpl, и убрать ненужное. |
-slava- | ||
13.11.2010, 6:13 |
PXControl Удаленное управление PtokaX 0.4.x.x |
dimajak За это отвечает UDP-отладчик. Если сообщения об ошибках не отображаются, значит он отключен, либо ты вручную отписался от него, либо он не может пробиться через фаервол. |
Milena | ||
7.11.2010, 11:26 |
StatPX API1, API2 | Статистика хаба |
ProGeTTo Для этого нужно поставить веб-сервер |
ProGeTTo | ||
31.10.2010, 5:35 | У вас нет прав на просмотр этой темы | У вас нет прав на просмотр этого сообщения |
viperrr | ||
28.10.2010, 21:28 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Pank1, ProGeTTo | |||
24.10.2010, 15:38 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Доступна версия 1.01 beta Изменения: Исправлено отображение символов $ и | в веб-логе чата |
Nickolya, Ksan, Saymon21 | ||
22.10.2010, 20:04 |
StatPX API1, API2 | Статистика хаба |
Доступна версия 1.06 Изменения: Добавлено округление среднего времени на хабе при отображении статистики юзера |
KauH™, Milena, Saymon21, lankmv | ||
22.10.2010, 19:07 |
Menu Organizer API2 | Скрипт отправки меню |
Menu Organizer Версия: 1.00 Версия API: API2 (PtokaX 0.4.x.x, Lua 5.1) Автор: alex82 Описание: Скрипт предназначен для отправки юзер-команд на хабе. Особенности скрипта: Все юзер-команды находятся в текстовых файлах и не содержат каких-либо элементов синтаксиса Lua. Описание синтаксиса файлов меню Секция. Обозначается квадратными скобками и содержит номера профилей или группы прав доступа, разделенные пробелами. Элементы секции можно комбинировать в произвольном порядке. Например: [IsOp 2] - Меню будут отправляться юзерам с ключом, и юзерам с профилем 2 Группы прав доступа нечувствительны к регистру. Например, записи IsOp, isop и ISOP идентичны. Юзер-команды. Каждая юзер-команда должна находиться на новой строке. Добавление символа | в конце юзер-команд не обязательно. Двойные обратные слеши автоматически заменяются на одинарные. Пример юзер-команды: Код $UserCommand 1 3 [HUB_MENU]Помощь$<%[mynick]> [PREFIX]help| Все строки, не содержащие символа $ в начале или шаблона секции, считаются комментариями и не обрабатываются. Юзер-команды, найденные до обьявления первой секции, также игнорируются. Группы прав доступа All - Все юзеры Reg - Зарегистрированные юзеры IsOP - Юзеры с ключом (операторы) MassMsg - Рассылка массовых сообщений Topic - Установка топика TempBan - Временный бан TempUnban - Снятие временного бана RefreshTxt - Перезапуск текстовых файлов DelRegUser - Удаление регистрации юзера AddRegUser - Регистрация юзера ClrPermBan - Очистка списка постоянных банов ClrTempBan - Очистка списка временных банов GetInfo - Просмотр информации о юзере GetBans - Просмотр списка банов RestartScripts - Управление скриптами RestartHub - Перезапуск хаба TempOP - Временный оператор Gag - Заглушка/снятие заглушки Redirect - Перенаправление Ban - Бан Unban - Снятие бана Kick - Кик Drop - Дроп AllowedOPChat - Доступ к ОпЧату SendFullMyinfos - Отправка полного MyINFO SendAllUserIP - Отправка IP всех юзеров RangeBan - Бан диапазона RangeUnban - Снятие бана диапазона RangeTempBan - Временный бан диапазона RangeTempUnban - Снятие временного бана диапазона GetRangeBans - Просмотр списка банов диапазонов ClearRangePermBans - Очистка списка банов диапазонов ClearRangeTempBans - Очистка списка временных банов диапазонов Close - Отключение юзера [attachment=5137:MenuOrganizer_1.00.zip] |
Nickolya, KauH™, Taulalan, Invisible, Karumo, Kingston, Milena, Saymon21, WINS, RAND(i)M, DEN 007, Cyber_voodoo, EvgenyL, мамин_парень | ||
18.10.2010, 1:07 |
Luasocket win32 | Работа с сокетами |
Несколько слов относительно модуля http. В модуле имеется возможность работы через http-proxy, однако реализована она несколько странно - прокси необходимо указывать непосредственно в запросе. Это приводит к тому, что при необходимости использования прокси-сервера при выполнении запросов, приходится модифицировать каждый скрипт, работающий с модулем. Однако, этого можно избежать, если внести в модуль небольшие изменения: Перед строкой 280: Код local nreqt = adjustrequest(reqt) добавитьКод if PROXY then reqt.proxy = PROXY end После этого можно вписать адрес прокси-сервера непосредственно в настройки модуля: Код -- connection timeout in seconds TIMEOUT = 60 -- default port for document retrieval PORT = 80 -- user agent field sent in request USERAGENT = socket._VERSION -- proxy-server PROXY = "http://localhost:8080" |
Nickolya, Saymon21 | ||
15.10.2010, 20:52 |
StatPX API1, API2 | Статистика хаба |
RAND(i)M Логично. Только так наверное проще: Код tCopy[i] = {Name = v.sNick, Sort = v.bOperator and "\1"..v.sNick:lower2() or v.sNick:lower2(), Share = v.iShareSize, Profile = v.iProfile, Client = client or "?", Version = version or "", Descr = Descr or "",Email = Email, Mode = Mode, Hubs = hubs or "?", Slots = slots or "?", Limit = GetNormalSpeed(limit)} bahodiruz Попробуй так: Код Path = "", Файлы будут сохраняться в корне FTP-сервера. |
Milena | ||
15.10.2010, 10:16 |
Модуль GeoCity Определяем местоположение по IP с точностью до города |
Доступен GeoCity Updater 1.02 Изменения: Переписан интерфейс программы.Утилита совместима с модулем GeoCity 1.01, и не совместима с версией 1.00 |
Milena, Saymon21 | ||
15.10.2010, 10:05 |
StatPX API1, API2 | Статистика хаба |
alex82 1. Юзеров с ключом не получится переместить вверх без изменения формата БД, а сортировку хотел исправить, но забыл. Исправлю в следующей версии.1. Было бы неплохо приблизить список пользователей в WEB-статистике к привычному списку юзеров в ДЦ. т.е. сделать сортировку нечувствительной к регистру, и может даже поместить "ключканутых" вверх списка. 2. Скрипт создаёт пусту папку htdocs на диске C:, вроде все папки поменял, но он продолжает создавать, где именно в скрипте - я так и не нашёл. 2. Проверил. Папка создается именно там где надо, а не на диске C. -------------------------------------------------------- Исправление сортировки: Открываем Raw.lua. Находим (около 30 строки): Код table.insert(tCopy, {sEnter = v.Enter, iSessionTime = tonumber(v.SessionTime), iOnline = v.Online, iTotalTime = tonumber(v.TotalTime), Заменяем на sLeave = v.Leave, sNick = v.Name, iProfile = v.Profile, sIP = i, sRank = GetRank(i) } ) Код table.insert(tCopy, {sEnter = v.Enter, iSessionTime = tonumber(v.SessionTime), iOnline = v.Online, iTotalTime = tonumber(v.TotalTime), sLeave = v.Leave, sNick = v.Name, sSort = v.Name:lower2(), iProfile = v.Profile, sIP = i, sRank = GetRank(i) } ) Далее несколькими строками ниже находим: Код table.sort(tCopy, function(a, b) return (a.sNick < b.sNick) end) Заменяем на:Код table.sort(tCopy, function(a, b) return (a.sSort < b.sSort) end) Находим (около 94 строки): Код tCopy[i] = {Name = v.sNick, Share = v.iShareSize, Profile = v.iProfile, Заменяем на:Client = client or "?", Version = version or "", Descr = Descr or "",Email = Email, Mode = Mode, Hubs = hubs or "?", Slots = slots or "?", Limit = GetNormalSpeed(limit)} Код tCopy[i] = {Name = v.sNick, Sort = v.sNick:lower2(), Share = v.iShareSize, Profile = v.iProfile, Client = client or "?", Version = version or "", Descr = Descr or "",Email = Email, Mode = Mode, Hubs = hubs or "?", Slots = slots or "?", Limit = GetNormalSpeed(limit)} Далее несколькими строками ниже находим: Код table.sort(tCopy,function(a,b) return(a.Name<b.Name) end) Заменяем на:Код table.sort(tCopy,function(a,b) return(a.Sort<b.Sort) end) |
Milena, RAND(i)M | ||
14.10.2010, 13:14 |
От: StatPX От темы с ID: 1269 |
infection С помощью меню |
infection | ||
14.10.2010, 12:42 |
StatPX API1, API2 | Статистика хаба |
Доступна версия 1.06 beta Список изменений: Добавлена возможность отправки сгенерированных страниц на удаленный FTP-сервер |
Milena, Saymon21 | ||
12.10.2010, 12:46 |
Unknown Blocker API2 | Блокировка неизвестных команд |
Unknown Blocker Версия: 1.00 Версия API: API2 (Lua 5.1) Автор: alex82 Описание: Скрипт предназначен для блокирования неизвестных команд в главном чате и личке главного бота хаба. При создании скрипта преследовались следующие цели: * Исключить возможность "пробивания" скриптов блокировки главного чата при помощи произвольной команды. Внимание! Скрипт должен находиться в самом низу списка скриптов. При запуске он самостоятельно переместится на последнюю позицию списка. Однако следует помнить, что если Вы не выполняете полный перезапуск скриптов при их установке, Вам необходимо самостоятельно переместить данный скрипт на последнюю позицию после установки нового скрипта. [attachment=5096:Unknown_...ker_1.00.rar] |
Nickolya, rus.region78, Tsd, Invisible, Accelerator, PomanoB, OVERLORD1979, Kingston, Milena, Saymon21, Dimon21, TiGRpp, RAND(i)M, DEN 007, shur49, AfLc | ||
11.10.2010, 3:37 |
StatPX API1, API2 | Статистика хаба |
Ameet Полная совместимость будет только тогда, когда появитcя библиотека Lua-GD для Win64. А пока что придется отключить графики. |
Milena | ||
11.10.2010, 2:49 |
Заготовки скриптов для PtokaX Делимся болванками скриптов |
1) В этой таблице хранятся функции, отвечающие за обработку команд. Подробное описание есть в комментариях. 2) Ага. Зачем при каждой отправке меню выполнять десятки конкатенаций, если можно сделать это при запуске скрипта, а при подключении юзера просто отправлять готовую строку? |
Saymon21 | ||
11.10.2010, 1:57 |
Заготовки скриптов для PtokaX Делимся болванками скриптов |
Ksan Я не претендую на эксклюзивность, так что можешь выкладывать свою. ----------------------------------------------------------------------- Небольшие исправления в заготовке #1 - теперь алгоритм обработки команд стал еще ближе к встроенному обработчику птоки. Также добавил пару комментариев для кода, который может показаться новичкам темным лесом. Выложил заготовку #2 |
Saymon21 | ||
10.10.2010, 22:29 |
ChatHistorySQL История чата |
Решение проблемы: заменяем 125 строку на эту: Код if me or not data:find("^["..SetMan.GetString(29):gsub("[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1").."]"..tCfg.CmdPattern) and not data:find("^%s*is%s+kicking%s+%S+%s+because:") then |
Kingston, Milena, Saymon21, WINS, shullz | ||
10.10.2010, 14:12 |
Заготовки скриптов для PtokaX Делимся болванками скриптов |
Думаю, ни для кого не секрет, что скрипты далеко не всегда пишутся с нуля - многие скрипты, предназначенные для какой-либо определенной программы (в данном случае под "определенной программой" следует понимать PtokaX) содержат много практически идентичного кода (обработчик команд в чате, отправка меню, и.т.д), переписывать который в каждом скрипте не имеет смысла. Некоторые, наверное, даже догадываются о том, что в арсенале скриптеров со стажем имеются заранее написанные "болванки" скриптов, содержащие тот самый повторяющийся код, и позволяющие быстро сваять нужный скрипт. Предлагаю выкладывать подобные заготовки в этой теме. Для затравки выкладываю одну из своих заготовок: [attachment=5091:script_template_1.lua] Еще одна заготовка: [attachment=5092:script_template_2.lua]Отличается от первой тем, что позволяет устанавливать разные права доступа для команд. Тем, кто ковырялся в моих скриптах, данный код может показаться знакомым, и в этом нет ничего удивительного - прочитайте еще раз первый абзац этого сообщения, и вы поймете почему . |
Nickolya, Tsd, Invisible, Ksan, Артём, HackFresse, rival, Kingston, Milena, Saymon21, Dimon21, Antibiotic | ||
10.10.2010, 11:38 |
CmdToAdmin Скрипт посылает в приват владельцу хаба команды | API2 |
Можно несколько упростить код отлова команды в чате: Код function ChatArrival(user,data) Префиксы команд берутся из настроек хаба. Соответственно отпадает необходимость в таблице команд и цикле, проверяющем наличие команды в таблице. И чистка памяти, я думаю, здесь лишняя.if Core.GetUser(sNick) and user.sNick ~= sNick then local pre,cmd = data:match("%b<>%s+(["..SetMan.GetString(29):gsub("[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1").."])(%S+)") if pre then if not (pre == "+" and cmd:find("^%d+")) then -- Не реагируем на "+5", к примеру. cmd = cmd:lower() for i = 1,#tIgnoreCmd do if cmd == tIgnoreCmd[i] then return end end Core.SendPmToNick(sNick, sBot, "\tПослана команда хабу: "..data:sub(1,-2)) end end end end Код ToArrival = ChatArrival А это лучше удалить, поскольку во-первых, подавляющее большинство юзеров вообще не знают о возможности отправки команд главному боту хаба, во-вторых, будут проверяться все лички, а не только те, что были отправлены боту, а в третьих, при текущей реализации функции отлова команд, в лог будет попадать вся команда $To. Будет что-то вроде этого:Цитата <bot> Послана команда хабу: $To: bot From: user $<user> !command |
Invisible, Saymon21 | ||
5.10.2010, 17:48 |
Модуль GeoCity Определяем местоположение по IP с точностью до города |
Таки выложил обещанный класс php. В архиве также имеется тестовый скрипт. Подробности в первом посте. |
Milena, Saymon21 | ||
5.10.2010, 2:03 |
Модуль GeoCity Определяем местоположение по IP с точностью до города |
У меня вопрос к форумчанам. Найдутся ли добровольцы, знающие географию России, и желающие помочь проекту? Если да - обьясню суть проблемы подробнее. Добровольцы могут отписываться в этой теме. |
Milena | ||
4.10.2010, 0:39 |
StatPX API1, API2 | Статистика хаба |
Можно взять скин для StatPX Lite (пока что их всего 2), и переделать под StatPX. А можно самому сверстать. Если с веб-дизайном плохо, то можно сделать скин на основе какого-нибудь готового HTML-шаблона. |
Milena | ||
3.10.2010, 5:17 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Наверное потому что надо Код local _,_,information,fd=string.find( вместоКод local _,information,fd=string.find( PS. Цитата А мыши плакали, кололись, но продолжали жрать кактус Я решительно не понимаю, зачем вновь и вновь использовать эту хрень с прочерками (и делать в ней ошибки), если есть string.match() |
Saymon21 | ||
2.10.2010, 6:09 |
Anekbot API2 | Анекдоты из Интернета |
Чтобы не было пустых вопросов? В этом случае пустые вопросы все равно будут, ибо переменная Core определяется при запуске хаба. Соответственно, если скрипт запустить при остановленном хабе, он выкинет ошибку. Если уж менять, то на это: Код path = debug.getinfo(1).source:match("^@?(.+[/\\]).-$"):gsub("\\","/") |
Milena | ||
30.9.2010, 21:38 |
StatPX API1, API2 | Статистика хаба |
Идея действительно хороша, и уже реализована в StatPX Lite. Если когда-нибудь решусь на выпуск очередной версии, обязательно добавлю. |
Milena, Saymon21 | ||
21.9.2010, 12:24 |
string.gsub string.gsub замена > < аналогом < > |
Функция обработки смайлов из StatPX: Код tSmiles = { ["biggrin.gif"] = {":D", ":-D", ":=D"}, ["blink.gif"] = {"oO", "o.O", "o_O", "оО", "о.О", "о_О"}, ["confused.gif"] = {":S", ":-S", ":=S", ":confused:"}, ["cry.gif"] = {":'(", ":'-(", ":'=(", ":cry:"}, ["lol.gif"] = {":lol:", ":LOL:", "LOL"}, ["sad.gif"] = {":(", ":-(", ":=("}, ["shock.gif"] = {"O.O", "O_O", "О.О", "О_О", ":shock:"}, ["smiley.gif"] = {":)", ":-)", ":=)"}, ["tongue.gif"] = {":P", ":-P", ":=P"}, ["wink.gif"] = {";)", ";-)", ";=)"}, ["woohoo.gif"] = {"8-D", "8=D", ":woohoo:"}, } function string.Smiles(str) for i,v in pairs(tSmiles) do local rep = "<img src=\"smiles/"..i.."\" border=\"0\" alt=\"%1\" />" for _,smile in ipairs(v) do str = str:gsub(smile:gsub("[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1"),rep) end end return str end Используется так: Код src=src:Smiles() PS. Изобретать велосипед - на редкость неблагодарное занятие. |
foXDEvil | ||
21.9.2010, 12:07 |
string.gsub string.gsub замена > < аналогом < > |
Nickolya Код 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("[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1") Об этом я уже писал здесь. |
Saymon21 | ||
20.9.2010, 20:08 |
string.gsub string.gsub замена > < аналогом < > |
Наверное, в качестве аргумента при втором вызове нужно указывать zamena, а не data. А еще лучше так: Код zamena = data:gsub("<", "<"):gsub( ">", ">") |
foXDEvil | ||
20.9.2010, 12:08 |
Модуль GeoCity Определяем местоположение по IP с точностью до города |
Доступна версия 1.01. Подробности в первом посте. PS. Чуть позже выложу класс php для работы с GeoCity. |
Milena, Saymon21 | ||
20.9.2010, 11:24 |
PXControl Удаленное управление PtokaX 0.4.x.x |
[02:58:27] <Bot> *** Error, script PXControl_Server.lua start failed. Попробуй закомментировать Код if path:find("^/") then -- OS detection Если после этого скрипт запустится, проблема в неправильно установленной LFSrequire "lfs" -- Linux bLinux = true else require"pxlfs" -- Windows end |
Milena | ||
18.9.2010, 13:26 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Напиши в shortstat.tpl: Код <a href="/hubstat/stat.php">Хаб <font color="red">( (Юзеров: [TOTALUSERS], шара: [TOTALSHARE]) )</font></a> Потом в настройках скина включи страницу краткой статистики:Код ShortStat = y, -- Генерировать страницу краткой статистики для размещения на главной странице сайта (шаблон shortstat.tpl) Потом пропиши абсолютный путь и имя файла в переменной tWebFiles.ShortStat.PS. Принцип работы краткой статистики был таким изначально, так что это актуально для любой версии. |
Invisible, Saymon21 | ||
13.9.2010, 18:44 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Мдя, и в самом деле, фигню сморозил. Ладно, теперь серьезно. Находим в Raw.lua: Код local f = io.open (tWebFiles.ChatRank, "w") перед этим добавляем:Код if tTemp[1] then sTopChat = tTemp[1][1].." ("..tTemp[1][2].." сообщ.)" end Теперь вместо той фигни, что ты процитировал, пишем: Код :gsub("%[TOPCHAT%]",sTopChat or "?") |
Invisible, Saymon21 | ||
12.9.2010, 18:27 |
Ваши Вопросы И Предложения По Поводу Форума |
В свое время настраивал подсветку кода Lua для highlight.js (цвета а-ля Notepad++). Если надо - могу скинуть. |
Invisible | ||
12.9.2010, 18:18 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Saymon, Ksan Это мусор, оставшийся от StatPX. Правильным будет удалить эти строки: Код if not(tWebCfg.Enable) then UpdateUserStats() end |
Saymon21 | ||
11.9.2010, 18:42 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Saymon Открываем Raw.lua, находим: Код local f = io.open (tWebFiles.TopShare , "w") перед этим добавляем:Код if tCopy[1] then sTopShare = tCopy[1].Name.." ("..FormatSize(tCopy[1].Share)..")" end Открываем Web.lua, находим: Код :gsub("%[BANNED%]",sBanned) после чего добавляемКод :gsub("%[TOPSHARE%]",sTopShare or "?") :gsub("%[TOPCHAT%]",tCountryStats and tCountryStats[1] and tCountryStats[1][1].." ("..tCountryStats[1][1].." сообщ.)" or "?") И заменяем: Код WebstatUpdateTime=FormatDate2(os.time()) наBuildMainStat(user) BuildOnline() Код WebstatUpdateTime=FormatDate2(os.time()) BuildOnline() BuildMainStat(user) PS. Работоспособность не проверял. PPS. Для сообщения дня напишу чуть позже |
Invisible, Saymon21 | ||
11.9.2010, 1:36 |
Переименовка Ptokax Dc Hub 0.3.6.0 можно ли переименовать |
Удаление копирайта PtokaX Открываем SettingManager.cpp, находим (в районе 1400 строки): Код if(sTexts[SETTXT_HUB_TOPIC] == NULL) { Заменяем на:iLen = sprintf(msg, "$HubName %s|<%s> %s %s (%s: ", sTexts[SETTXT_HUB_NAME], sPreTexts[SetMan::SETPRETXT_HUB_SEC], LanguageManager->sTexts[LAN_THIS_HUB_IS_RUNNING], sTitle.c_str(), LanguageManager->sTexts[LAN_UPTIME]); } else { iLen = sprintf(msg, "$HubName %s - %s|<%s> %s %s (%s: ", sTexts[SETTXT_HUB_NAME], sTexts[SETTXT_HUB_TOPIC], sPreTexts[SetMan::SETPRETXT_HUB_SEC], LanguageManager->sTexts[LAN_THIS_HUB_IS_RUNNING], sTitle.c_str(), LanguageManager->sTexts[LAN_UPTIME]); } Код if(sTexts[SETTXT_HUB_TOPIC] == NULL) { iLen = sprintf(msg, "$HubName %s|", sTexts[SETTXT_HUB_NAME]); } else { iLen = sprintf(msg, "$HubName %s - %s|", sTexts[SETTXT_HUB_NAME], sTexts[SETTXT_HUB_TOPIC]); } Открываем utility.cpp, находим (в районе строки 973): Код int GetWlcmMsg(char * sWlcmMsg) { Заменяем на:#ifdef _WIN32 int iLen = sprintf(sWlcmMsg, "%s%I64d %s, %I64d %s, %I64d %s / %s: %I32d)|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_NAME_WLCM], #else int iLen = sprintf(sWlcmMsg, "%s%" PRIu64 " %s, %" PRIu64 " %s, %" PRIu64 " %s / %s: %u)|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_NAME_WLCM], #endif iDays, LanguageManager->sTexts[LAN_DAYS_LWR], iHours, LanguageManager->sTexts[LAN_HOURS_LWR], iMins, LanguageManager->sTexts[LAN_MINUTES_LWR], LanguageManager->sTexts[LAN_USERS], ui32Logged); if(CheckSprintf(iLen, 1024, "GetWlcmMsg2") == false) { sWlcmMsg[0] = '\0'; return 0; } return iLen; } Код int GetWlcmMsg(char * sWlcmMsg) { int iLen = sprintf(sWlcmMsg, "%s", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_NAME_WLCM]); if(CheckSprintf(iLen, 1024, "GetWlcmMsg2") == false) { sWlcmMsg[0] = '\0'; return 0; } return iLen; } Далее качаем Borland Developer Studio или Borland C++ Builder, и собираем PtokaX.exe из исходников. А пока качается, размышляем о том, имеем ли мы моральное право удалять копирайты. PS. А для особо ленивых выкладываю модифицированную GUI-версию: [attachment=5006:PtokaX_n...opyright.rar] файл раздается на правах лулзов |
Invisible, Alexey, dembel | ||
10.9.2010, 16:08 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Ksan Вообще-то время запуска хаба устанавливается в строке 36, и только при первом запуске: Код if not tHubStat.Start then tHubStat.Start = os.time() end А 267 строка - это и есть та самая функция установки времени запуска в "удобоваримом" формате. В связи с этим у меня предложение: давайте будем хоть немного вникать в суть прежде чем писать сообщения. И еще. Давайте не будем устанавливать километровые подписи. |
мамин_парень | ||
10.9.2010, 4:18 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Error404 Даже представляю, куда могла деться переменная, обьявленная в самом начале скрипта. Может ты сам ее удалил? Или пытаешься подсунуть птоке файл конфигурации отдельно от скрипта? А ты в config.lua задал переменную path? Она задается глобально в StatPX_Lite.luaДоступна версия 1.00 beta2. Изменения: * Исправлена ошибка в функции перезагрузки шаблонов * Добавлена возможность использовать в сообщении дня переменной [MESSAGES], отвечающей за количество сообщений текущего юзера. * Удален отладочный код, приводящий к периодическому получению сообщения об ошибке "Ошибка StatPX Lite: upd" * Удалены неиспользуемые настройки, оставшиеся от StatPX * Незначительные исправления скина Default * Добавлен скин Simple * Более оптимальные настройки по умолчанию |
мамин_парень, Unique | ||
9.9.2010, 20:49 |
Registrator API2 | Скрипт регистрации |
Has21 Первая ошибка возникает из-за наличия символа процента в нике юзера, вторая - из-за использования команды смены пароля без аргументов. Лечатся так: Код return (tMsg.Reg:gsub("%[nick%]",user.sNick):gsub("%[pass%]",pass)) заменить на Код return (tMsg.Reg:gsub("%[nick%]",user.sNick:gsub("%%","%%%%")):gsub("%[pass%]",pass:gsub("%%","%%%%"))) Код [tCmd.NewPass] = function(user,data) заменить на local tReg = RegMan.GetReg(user.sNick) if tReg then local pass = data:match("^(%S+)") local newpass = data:match("^%S+%s+(%S+)") if pass and newpass then if tReg.sPassword == pass then RegMan.ChangeReg(tReg.sNick,newpass,tReg.iProfile) return "Пароль изменён. Новый пароль - "..newpass..". Не забудьте исправить пароль в настройках избранного хаба." else return "Неверный пароль." end else return "Ошибка синтаксиса. Синтаксис: "..sPrefix..tCmd.NewPass.." <старый пароль> <новый пароль>." end else return "Команда доступна только для зарегистрированных пользователей!" end end, Код [tCmd.NewPass] = function(user,data) if data then local tReg = RegMan.GetReg(user.sNick) if tReg then local pass = data:match("^(%S+)") local newpass = data:match("^%S+%s+(%S+)") if pass and newpass then if tReg.sPassword == pass then RegMan.ChangeReg(tReg.sNick,newpass,tReg.iProfile) return "Пароль изменён. Новый пароль - "..newpass..". Не забудьте исправить пароль в настройках избранного хаба." else return "Неверный пароль." end else return "Ошибка синтаксиса. Синтаксис: "..sPrefix..tCmd.NewPass.." <старый пароль> <новый пароль>." end else return "Команда доступна только для зарегистрированных пользователей!" end end return "Ошибка синтаксиса команды" end, |
Milena, Has21 | ||
9.9.2010, 17:18 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Выложил 2 скина. Подробности во втором посте. |
мамин_парень, Unique | ||
8.9.2010, 21:54 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
*FoxMalder* Покрути эти опции: Код ForceUpdate = 10, -- Количество отключений/подключений пользователей, после которого будет произведено внеочередное обновление статистики Код CountryStatsUpdate = 10, -- Число подключений, по достижении которого будет обновлен топ стран. Рекомендуется увеличить значение параметра на хабах с онлайном более 1000 Поставь около 50 в обеих. |
мамин_парень, Unique | ||
8.9.2010, 18:55 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Invisible Найди кусок кода: Код {"%[RANK%]",[[ result = result:gsub("%[RANK%]",tChatRank[user.sNick] and GetRank(tChatRank[user.sNick]) or "нет")]]}, После него добавь: Код {"%[MESSAGES%]",[[ result = result:gsub("%[MESSAGES%]",tChatRank[user.sNick] or 0)]]}, Теперь можно использовать переменную [MESSAGES] в сообщении дня |
Invisible, Saymon21, мамин_парень, Unique | ||
8.9.2010, 16:26 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
*FoxMalder* Сколько юзеров на хабе? |
мамин_парень | ||
8.9.2010, 5:23 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Часто задаваемые вопросы Вопрос: Зачем было удалять базу данных пользователей? Кому она мешала? Ответ: Это сделано для того, чтобы сделать возможной работу скрипта на крупных инет-хабах - из-за засорения БД динамическими IP-адресами, StatPX становился неработоспособным уже через несколько дней использования. Данный скрипт лишен этого недостатка. Вопрос: В какую папку надо положить папки со смайлами и флагами чтобы они отображались на сайте? Ответ: В ту же папку, в которую сохраняются сгенерированные html-страницы Вопрос: Как сделать так, чтобы страницы статистики могли видеть юзеры из сети? Ответ: Для этого необходимо установить веб-сервер (например Apache), и указать в качестве пути сохранения страниц корневую директорию веб-сервера Вопрос: Как заставить работать пункт "Последний зарегистрировавшийся юзер" на главной странице? Ответ: Для этого необходимо добавить в скрипт регистрации код, записывающий ник зарегистрировавшегося юзера в файл lastreg.txt, находящийся в папке StatPX_Lite. Код должен выглядеть примерно так: Код local lastreg = io.open(Core.GetPtokaXPath().."scripts/StatPX_Lite/lastreg.txt","w") К примеру, в скрипт Registrator этот код нужно добавить сразу после строк:if lastreg then lastreg:write(user.sNick) lastreg:close() end Код if tCfg.ShowToAll then ToAll("Поприветствуем нового зарегистрировавшегося участника - "..user.sNick.."!") end Скины pixabella green |
Invisible, Saymon21, Dimon21, DEN 007, dj_crazy_joker, ImDim, мамин_парень, kztm, Unique | ||
8.9.2010, 5:18 |
StatPX Lite API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
StatPX Lite Версия: 1.01 beta Версия API: API2 Системные требования: PtokaX 0.4.x.x, Lua 5.1 Автор: alex82 Описание: Скрипт представляет собой переделанный и дополненный StatPX. Основные отличия от оригинала: * удалена база данных юзеров (со всеми вытекающими отсюда последствиями - топ хабберов и статистика посещаемости также пошли под нож) Возможности скрипта: Статистика хаба:учёт рекордов по размеру шары и количеству пользователей Скачать: [attachment=5140:StatPX_L....01_beta.rar] Старые версии [attachment=5004:StatPX_L...00_beta2.rar] Флаги стран: [attachment=4993:flags.rar] Смайлы: [attachment=4995:smiles.rar] |
Nickolya, Tsd, Invisible, Ksan, Артём, Accelerator, Satib, dka, Milena, Saymon21, Dimon21, Just, random name, WINS, viperrr, grifons, ke(x)one, dj_crazy_joker, ImDim, Hashish, мамин_парень, Unique | ||
8.9.2010, 4:04 |
StatPX API1, API2 | Статистика хаба |
Оно должно быть включено в настройках скина: Код ShortStat = n, -- Генерировать страницу краткой статистики для размещения на главной странице сайта (шаблон shortstat.tpl) Ты, эт самое, уточни с какой версией возишься. 1.05 сильно отличается от предыдущих. |
Milena | ||
8.9.2010, 2:41 |
StatPX API1, API2 | Статистика хаба |
Дело в том, что автор скрипта - ленивая скотина. Он до сих пор не переделал шаблоны, предназначенные для встраивания в движки, под новую версию StatPX (формат шаблонов изменился в версии 1.05). В общем, в данный момент единственный выход - самому сверстать шаблоны для Вашего движка. PS. Хотя, можно взять шаблон краткой статистики из старой версии скрипта (разумеется, нужно переименовать его из hubstat.tpl в shortstat.tpl) - изменений в нем почти нет. Это не решит всех проблем, однако ручной работы станет поменьше. |
Milena, Avalon55 | ||
5.9.2010, 20:44 |
Автозапуск с Windows |
http://mydc.ru/index.html?showtopic=1164&a...ost&p=32061 To Saymon Ту тему давно пора прибить, или на худой конец убрать из прилепленных - она морально устарела |
random name | ||
3.9.2010, 13:50 |
Registrator API2 | Скрипт регистрации |
Milena, xXx-Portal | |||
2.9.2010, 4:14 |
вход/выход |
kc_duke [attachment=4975:conn_log.lua] |
Invisible, kc_duke | ||
28.8.2010, 17:42 |
HubBanner API2 | Графический баннер хаба |
Доступна версия 2.01 Изменения: * Добавлена возможность отрисовки текста произвольным шрифтом (можно использовать любые шрифты, поддерживаемые библиотекой FreeType). * В настройки изображений добавлена переменная [topic]. * Открыд код функции отрисовки текста шрифтом Visitor. |
Invisible, Saymon21, averon.nv | ||
28.8.2010, 11:59 |
StatPX API1, API2 | Статистика хаба |
640 строка. Меняем Код MOTDChat на Код (MOTDChat or "") |
alexvv, Milena, xXx-Portal | ||
26.8.2010, 23:54 |
Hub Menu API2 | Меню для встроенных команд PtokaX |
xXx-Portal Подозреваю, что всему виной кривая настройка прав профилей, точнее пункта "Заходить с забаненных IP-адресов". |
Milena, xXx-Portal | ||
16.8.2010, 12:18 |
PXControl Удаленное управление PtokaX 0.4.x.x |
Хотелось бы чтобы можно в настройках указать с ключиком/без ключика с сохранением всех функций. Насколько мне известно, права на просмотр статистики имеют все юзеры. А насчет всех функций - доступ к некоторым функциям (в частности, UDP-отладчик) дается ТОЛЬКО с ключом, и это НИКАК нельзя исправить из Lua.И перестань называть юзера ботом. Никакой это не бот, а обычный юзер. А клиент PXControl - обычный DC-клиент, в который добавлены расширения протокола для управления настройками, и UDP-отладчик. |
Milena | ||
15.8.2010, 18:48 |
ChatHistorySQL История чата |
Добавлен конвертер БД ChatLogsMySQL --> ChatHistorySQL |
Nickolya, Milena, Saymon21 | ||
14.8.2010, 19:39 |
StatPX API1, API2 | Статистика хаба |
averon.nv Ну так укажи высоту ячейки Код <tr><td align="center" height="30"><a href="http://страница"><IMG SRC="http://адрес рисунка.png" border="0" alt="Перейти к теме"></a></td></tr> |
Milena | ||
14.8.2010, 18:55 |
StatPX API1, API2 | Статистика хаба |
ALex82 Нихрена не понял.Спасибо, копирайт вернулся, но сейчас у изображения появился отступ первой строки и после него - как бы по середине стал - так и должно быть? И не отображается фукция «alt="Перейти к теме"» - при наведении мышкой на изображение, показывает обычный переход по указнной ссылке, когда за место этого должно быть замена на: Перейти к теме Насколько мне известно, alt используется в том случае, когда в браузере отключено отображение рисунков. Для создания всплывающей подсказки нужно использовать параметр title тега aНиколяся Не надо флудить. |
Milena | ||
14.8.2010, 18:17 |
StatPX API1, API2 | Статистика хаба |
averon.nv Вставлять нужно внутрь таблицы: Код <body> <table cellpadding="0" cellspacing="0" border="0" align="center" class="mainblock"> <tr><td align="center"><a href="http://страница"><IMG SRC="http://адрес рисунка.png" border="0" alt="Перейти к теме"></a></td></tr> <tr><td valign="top" class="content"> <table class="head" width="100%" cellpadding="0" cellspacing="0" align="center"> <tr> <th nowrap="nowrap" class="head">Статистика хаба [HUBNAME]</th> </tr> Код но как сайт вкл не получается Я надеюсь, у тебя установлен вебсервер? Или ты ждешь, что раздавать файлы в сеть начнет сама птока? |
Milena | ||
14.8.2010, 17:56 |
PXControl Удаленное управление PtokaX 0.4.x.x |
Можно создать отдельный профиль админа без ключа, но в этом случае не будет работать UDP-отладчик. А можно заставить сервер удалять админа, использующего команды удаленного управления, из списка юзеров: |
Tsd, Milena, Saymon21 | ||
14.8.2010, 1:13 |
PXControl Удаленное управление PtokaX 0.4.x.x |
Milena | |||
2.8.2010, 5:05 |
От: StatPX От темы с ID: 1269 |
Ну вот, приехали. В моем скрипте без моего ведома появилась функция чат-ранга, а я узнаю об этом последним. А если серьезно... ...то это вовсе не чат-ранг, а звание топа хабберов - по проведенному на хабе времени. И в конфиге есть соответствующий комментарий: Цитата Ранги должны добавляться от самого низкого к самому высокому {время,"Ранг"} [время] - количество дней проведённых пользователем на хабе Пример: {30, "Постоялец"} Означает: чтобы получить ранг "Постоялец" пользователь должен просидеть на хабе не менее 1 месяца |
Invisible | ||
31.7.2010, 19:10 |
LinkCollect API2 | Сборщик ссылок |
GASTROLER692 Теоретически можно все. Если ты внятно обьяснишь свою задумкку, тогда станет ясно, можно ли это практически. |
Invisible | ||
28.7.2010, 21:57 |
IP Info API2 | Информация об IP-адресах, отправленных в главный чат |
IP Info Версия скрипта: 1.00 Версия API: API2 (PtokaX 0.4.0/0.4.1, LUA 5.1) Автор: alex82 Описание: Скрипт отлавливает в главном чате IP-адреса, и отображает информацию о них. Если информация об IP-адресе не найдена в базе данных скрипта, то он попытается определить местоположение адреса по базе данных IP-To-Country. [attachment=4784:IPInfo_1.00.rar] |
Nickolya, intlive, rus.region78, Invisible, rival, Milena, Chimera, Cyber_voodoo | ||
26.7.2010, 10:06 |
FAQ | Часто задаваемые вопросы Общие вопросы относительно программирования на Lua |
Вопрос: Не могу запустить lua.exe - выкидывает ошибку "Приложению не удалось запуститься, поскольку оно некорректно настроено. Повторная установка приложения поможет решить проблему". Подскажите, что надо настроить, чтобы эта ошибка не возникала? Ответ: Данная ошибка присуща официальным бинарникам Lua и пакету LuaForWindows. Для ее устранения нужно установить набор runtime-библиотек Visual C++ 2005: Вопрос: Я написал скрипт на Lua, но, судя повсему, допустил в нем ошибку - консоль Lua сразу закрывается, игнорируя ключ -i, и я не могу посмотреть сообщение об ошибке. Подскажите, можно ли сделать так, чтобы консоль переходила в интерактивный режим даже в том случае, когда в скрипте есть синтаксическая ошибка? Ответ: Можно. Для этого Вы можете добавить в контекстное меню Lua-скриптов команду, запускающую скрипт в "безопасном" режиме: Код Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\lua\shell\runsafe] @="Запуск (безопасный режим)" [HKEY_CLASSES_ROOT\lua\shell\runsafe\command] @="\"D:\\Program Files\\lua\\lua.exe\" -i -e \"r,e = pcall(dofile,[=[%1]=]); if r then print([=[File %1 has no errors]=]) else print(e) end\"" либо команду, позволяющую проверить скрипт на наличие синтаксических ощибок, но не запускающую его выполнение (Следует помнить, что данная команда проверяет скрипт только на наличие грубых синтаксических ошибок, не позволяющих интерпретатору Lua скомпилировать его в байт-код. Для поиска ошибок в алгоритмах скрипта, Вам необходимо отлаживать его непосредственно на той платформе, для которой он написан): Код Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\lua\shell\check] @="Проверить" [HKEY_CLASSES_ROOT\lua\shell\check\command] @="\"D:\\Program Files\\lua\\lua.exe\" -i -e \"r,e = loadfile([=[%1]=]); if r then print([=[File %1 has no errors]=]) else print(e) end\"" Чтобы добавить команду в контекстное меню, скопируйте код в файл с расширением .reg, и запустите его. Во всех приведенных выше фрагментах кода предполагается, что бинарники Lua находятся в папке D:\Program Files\lua\. Если Lua установлен в другую папку, то Вам необходимо исправить пути вручную. Имя раздела реестра, который используется для создания контекстных меню файлов с расширением .lua, также может отличаться. Чтобы узнать его, запустите редактор реестра, откройте ветвь HKEY_CLASSES_ROOT, найдите раздел .lua, и посмотрите значение параметра "По умолчанию". Если Вы по каким-либо причинам не хотите лезть в реестр, то можете воспользоваться готовым файлом, который внесет все необходимые изменения, и добавит в контекстное меню файлов .lua и .luac команды для редактирования в Notepad++, запуска в обычном и безопасном режимах, и проверки на наличие ошибок: [attachment=4766:lua.reg.rar] Не забудьте исправить пути перед запуском файла! |
Nickolya, Invisible, Drakula, Milena, Saymon21 | ||
26.7.2010, 0:13 |
Ваши Вопросы И Предложения По Поводу Форума |
Это вроде как в "Всё о Direct Connect" надо. Еще можно реорганизацию раздела скриптов для птоки. Уже давно просится раздел "Взаимодействие хаба с сетью" (ну, или что-то в этом роде), в который можно переместить все веб-статистики, мониторинги игровых серверов, парсеры RSS - в общем, все, что так или иначе взаимодействует с Сетью. Также можно выделить все антиматы, антирекламы и антипрокси в раздел "Безопасность" |
Nickolya, Saymon21 | ||
25.7.2010, 13:51 |
ChatHistorySQL История чата |
ChatHistorySQL Версия скрипта: 1.00 Версия API: API2 (PtokaX 0.4.0/0.4.1, LUA 5.1) Автор: alex82 Описание: Скрипт предназначен для сохранения истории сообщений главного чата в базе данных MySQL, и последующего вывода ее при подключении к хабу, либо по запросу. Имеется возможность поиска сообщений по нику, IP-адресу, или тексту. Также имеется возможность создания резервной копии базы данных скрипта непосредственно с помощью меню хаба, либо команды в главном чате. Скрипт умеет самостоятельно восстанавливать соединение с сервером MySQL. ВНИМАНИЕ! Для работы скрипта требуется библиотека MySQL. Перед запуском скрипта необходимо создать базу данных MySQL. [attachment=4760:ChatHist...SQL_1.00.rar] Конвертер базы данных ChatLogsMySQL --> ChatHistorySQL [attachment=4885:chatlog_converter.rar] |
Nickolya, intlive, rus.region78, Tsd, Invisible, Herurg, Kingston, whuru, Milena, CrazyKiller, Saymon21, Dimon21, WINS, lankmv, shullz | ||
24.7.2010, 12:23 |
! Часто Задаваемые Вопросы ! Обязательно прочитать всем!!! |
Как установить/удалить/запустить PtokaX как службу? Консольная версия PtokaX прекрасно умеет устанавливать себя как системную службу.
Примеры: Конфигурирование директории и установка сервиса: Код "C:\Program Files\PtokaX\PtokaX.exe" -c "C:\PtokaX\" -i "PtokaX" Удаление сервиса: Код "C:\Program Files\PtokaX\PtokaX.exe" -u "PtokaX" Для запуска и остановки службы можно также использовать консольную программу NET, входящую в состав Windows. Команда запуска службы: Код NET START PtokaX Команда остановки: Код NET STOP PtokaX |
Invisible, Saymon21, shur49, мамин_парень | ||
13.7.2010, 23:41 |
StatPX API1, API2 | Статистика хаба |
одно интересное место в стате пользюка, обязательно такая космическая точность нужна? строку 433 меняем на эту: Код FormatTime(math.round(tUserStat[IP].TotalTime/iAverage)).."\n\t- Ранг: "..GetRank(IP).."\n" И еще один момент: пишутся в лог любые русскоязычные команды, которые не перехватили вышестоящие скрипты. Надо хотя-бы для приличия заглянуть в файл настроек. Там каждая настройка откомментирована.Цитата CmdPattern = "[a-zA-Z]+", --Шаблон команд в главном чате. Используется для фильтрации команд в логе главного чата. --Шаблон, подходящий для настроек PtokaX по умолчанию: "[a-zA-Z]+" --Если на хабе используются команды, содержащие символы кириллицы или цифры, то вместо [a-zA-Z]+ нужно использовать %S+ |
Milena | ||
1.7.2010, 1:27 |
StatPX API1, API2 | Статистика хаба |
Доступна версия 1.05. Изменения: Исправлена ошибка в функции поиска IP (attempt to concatenate global 'IP' (a nil value)) |
Milena, Saymon21 | ||
30.6.2010, 23:23 |
StatPX API1, API2 | Статистика хаба |
Цитата В Web.lua нашел строку: Шаблона действительно нет. Качаем одну из старых версий, и берем шаблон оттуда.Код ADDITMAINSTAT = LoadTemplate(path..tWebCfg.Skin.."/shortstat.tpl") Но шаблона этого нет. Или мы его создаем? Цитата Никто не пробовал интегрировать сюда скрипт ChatLogsMySQL? Зачем его сюда интегрировать? Ставь отдельно, бери веб-морду из webstats Романова, и подгоняй под дизайн StatPX.Цитата Простите. Но если проблема известная, почему же ее в релизе не исправить сразу? В ближайшем будущем исправлю все засветившиеся ошибки. Может быть даже сегодня.Цитата truth, не годится, т.к. в сгенерированных страничках исчезнет ссылка на лог чата, автор это предусмотрел. А что мешает убрать соответствующий переключатель из header.tpl? |
Milena, Naum_Off | ||
28.6.2010, 21:12 |
Нужна помощь по 2 скриптам |
Не по таймеру, а при подключении нового юзера Код function UserConnected(user) Core.SendToUser(user,BotShit) end OpConnected = UserConnected RegConnected = UserConnected Отправка по таймеру будет жрать траффик |
prokazzza | ||
26.6.2010, 0:49 |
ScriptTimer API2 | Запуск/остановка скрипта по таймеру |
ScriptTimer Версия: 1.00 Версия API: API2 (Lua 5.1; PtokaX 0.4.x.x) Автор: alex82, Nickolya Описание: Скрипт предназначен для запуска и остановки указанного скрипта в заданное время. [attachment=4652:ScriptTimer_1.00.7z] Перенесено из раздела "Запросы скриптов" |
Tsd, Invisible, Karumo, rival, Milena, TiGRpp, Pro009, sania, shur49 | ||
21.6.2010, 10:43 |
Sourcemon API2 | Мониторинг игровых серверов Source и GoldSource |
Разве настройки серверов находятся в нескольких файлах? Код {Addr = "localhost",Timeout = 1,Client = "http://sample.ru/file.exe", Forum="http://sample.ru/forum/"}, |
Milena, brauzer84 | ||
21.6.2010, 10:37 |
Угадай онлайн API2 |
Я тупо забыл добавить в архив файл конфига. Перезалил архив. |
Nickolya, Invisible, Milena | ||
18.6.2010, 16:11 |
Угадай онлайн API2 |
Угадай онлайн Версия: 1.01 Версия API: API2 (PtokaX 0.4.x.x) Автор: alex82 Описание: Смысл игры заключается в угадывании количества юзеров на хабе в определенное время. Если никому из игроков не удалось угадать точное число юзеров, победителем становится тот, кто был наиболее близок к к победе. [attachment=4636:GuessOnline_1.01.rar] |
Nickolya, Invisible, Milena, Saymon21, Pro009, random name, Тёмич, доктор ливси, ImDim | ||
18.6.2010, 15:52 |
Sourcemon API2 | Мониторинг игровых серверов Source и GoldSource |
ребят...мож знает кто как добавить ссылку на сам клиент для игры... После этого: Код if tCfg.ShowServerCmd then msg = msg.."\n"..sTab.."Для получения подробной информации введите "..Prefix..tCmd.Server.." "..i end вставляешь. Код if tServers[i].Client then msg = msg.."\n"..sTab.."Скачать клиент: "..tServers[i].Client end if tServers[i].Forum then msg = msg.."\n"..sTab.."Форум сервера: "..tServers[i].Forum end Теперь в настройки серверов можно добавлять параметры Client и Forum. |
Milena, brauzer84 | ||
18.6.2010, 15:26 |
Nick Protect API2 | Защита ников от подделки |
Nick Protect Версия: 1.00 Версия API: API2 Автор: alex82 Описание: Скрипт предназначен для защиты ников от подделки методом подмены символов на аналогичные по начертанию. ВНИМАНИЕ! Скрипт не совместим с идиотскими никами операторов (@dm1№, |З@©Я, и.т.д). Настоятельно рекомендуется удалить операторов с такими никами перед установкой скрипта. [attachment=4618:nick_protect_1.00.rar] |
Nickolya, FallenAngel, mariner, Karumo, OVERLORD1979, Drakula, Kingston, Milena, Jet1k, Barmolei0808, Saymon21, FreeNas, TiGRpp, WINS, DEN 007, Змий | ||
12.6.2010, 16:16 |
Hub Menu API2 | Меню для встроенных команд PtokaX |
Как именно не работает? Команда пролетает в чат, или вылазит сообщение о неизвестной команде? Если второе, то виноват один из скриптов, блокирующий команду !topic |
Milena | ||
31.5.2010, 19:57 |
StatPX API1, API2 | Статистика хаба |
Правильное исправление ошибки: меняем 274 строку на эту: Код if #tCopy[i].sRank < 9 then tCopy[i].sRank = tCopy[i].sRank.."\t" end |
Milena, Saymon21 | ||
24.5.2010, 18:52 |
StatPX API1, API2 | Статистика хаба |
Строка 374: Код return "\n\t"..string.rep("=", 40).."\n\tРезультат поиска по IP "..IP..": ".."\n\t"..string.rep("=", 40).. заменяем на: Код return "\n\t"..string.rep("=", 40).."\n\tРезультат поиска по IP "..data..": ".."\n\t"..string.rep("=", 40).. |
Milena | ||
23.5.2010, 23:19 |
StatPX API1, API2 | Статистика хаба |
Конвертер баз писал довольно давно, и уже подзабыл как он работает. Код if loadfile(fOnline) then Отсюда следует, что птока не просто открывает файл, а пытается загрузить его как порцию Lua, и не может, поскольку в файле есть синтаксическая ошибка.-- blablabla else error("Файл "..fOnline.." не найден.") end Чтобы узнать, где именно ошибка, сделай так: Код function Main() local c,e = loadfile(fOnline) if c then os.execute("md \""..path.."StatPX/\"") dofile(fOnline) for i, v in pairs(tUserStat) do tUserNicks[i] = tUserStat[i].Names tUserStat[i].Names = nil end Save() else error("Ошибка: "..e) end end |
Milena | ||
23.5.2010, 22:49 |
StatPX API1, API2 | Статистика хаба |
Возраст хаба - хотелось бы что б это была дата, которую можно было указать. Моему хабу, к примеру, не 15 минут отроду. В data.tbl видимо делается запись Start и берутся значения из неё, я так понял - т.е. можно подправить там, только пока не понятен формат даты / числа, в котором оно там записано. Ну а для чего, по-твоему, сделано меню "Установить время запуска"?Цитата можно ли такую опцию, как ввести настраиваемый диапозон IP адресов, кол-во пользователей из которого на графике будет отображено отдельной линией? смысл сей "фантазии" в том, чтобы, к примеру, локальные (пользователи локальной сети) и внешние пользователи (точнее их кол-во) на графике как-то отражались, или, например, россияне и все остальные. "Нафантазировать" можно и подвязку графиков к ip-to-country.csv, но это уже имхо излишний гемор, чтобы получить "кашу", а не график. Можно и отдельной линией, но придется перепилить весь код создания графиков. Куда проще сделать это отдельным графиком.Цитата Под виндой я так понял дело связано с слешом. (пытаться победить даже не стал) При любой чертовщине с файлами хорошо помогает утилита FileMon - она покажет, где на самом деле птока ищет файл, и почему не может открыть его.Под фри пробовал в скрипте указать полные пути но все арвно ошибка появлятся таже. (уж поверте файл базы по этим путям есть ) что делать как быть? |
Milena | ||
21.5.2010, 10:31 |
StatPX API1, API2 | Статистика хаба |
Доступна версия 1.05 beta Список изменений: Переписаны функции обработки команд. |
Nickolya, truth, Milena, Saymon21 | ||
20.5.2010, 15:51 |
Registrator API2 | Скрипт регистрации |
baralgin Цитата можно ли переделать этот скрипт так, что бы список зарегестрированных пользователей чистился сам, например если с аккаунта не выходили месяц , то он удаляется автоматически Это можно реализовать отдельным скриптом. Где-то на форуме такой валялся (название даже приблизительно не помню).Цитата и добавить ограничение на скорость скачки незарегестрированным юзерам Это нереализуемо в принципе - скачка происходит напрямую между клиентами, и хаб не может контролировать ее. |
Milena | ||
18.5.2010, 4:02 |
От: StatPX От темы с ID: 1269 |
Saymon21 | |||
14.5.2010, 20:35 |
StatPX API1, API2 | Статистика хаба |
alex82, спасиб за функцию, все сделал, работает отлично. WMR есть? Хоть на пивас подкину ;) WMR нету, зато есть WMZ - Z843102502936 Цитата alex82, как правильно запихнуть функцию перекодирования в utf8?) Пихай сразу после открывающего тега препроцессора (<?php или просто <?) - не ошибешься. И включи отображение ошибок PHP - не дело отлаживать скрипты вслепую.Если заменить на Код $this->output = toutf8(@file_get_contents("имя_файла")); старничка вовсе не отображается.. Код error_reporting = E_ALL (это в php.ini)display_errors = On |
Milena | ||
14.5.2010, 6:55 |
StatPX API1, API2 | Статистика хаба |
Постановления обязующие хранить чуть ли не логи личек уже давно актуальны, но хоть это благо компенсируется пониманием исполнителей. Из запросов с которыми приходилось сталкиваться - "ник такой-то в такое-то время - какой IP адрес был?" Ответы на такие вопросы формулировкой "нет технической возможности" вполне могут закончится закрытием ресурса, как "несоответствующего требованиям постановления №...". Проблема решается с помощью переноса хаба на выделенный сервер, находящийся в цивилизованной стране.Беларусским патриотам Можете сколько угодно брызгать слюной в монитор по поводу сказанного выше, но мое мнение останется неизменным - государство с ТАКИМИ законами нельзя считать цивилизованным. |
Milena | ||
13.5.2010, 22:19 |
StatPX API1, API2 | Статистика хаба |
Milena | |||
13.5.2010, 19:35 |
StatPX API1, API2 | Статистика хаба |
Когда онлайн хаба 3.5-4к и файл базы до метров 9ти-10ти разрастается, начинает складываться ощущение, что сервер только тем и занимается, что работает с этим файлом. Если закрыть Птоху, то она закрываться будет минуту - две. Это нормально, или мне имеет смысл поискать потенциальный конфликт с другими скриптами? Это нормально - Lua не умеет работать с такими большими объемами данных - вот оно и тупит. Экспериментальным путем было выяснено, что предел скрипта - 50 тысяч записей в базе. При достижении этого предела Lua умирает.После выхода новой версии слеплю облегченный вариант скрипта - с веб-статистикой, но без статистики ников/IP. А как насчет интеграции с IPB 3? Добавляем дополнительную страницу со всей статой хаба.. иными словами: статистика в шаблоне форума (= Ну, тогда ничего не мешает подгрузить в эту страницу содержимое файла статистики.Было бы весьма популярно. Понимаю, что это не так легко, но авось выйдет. Как сделать доп. страницу с поддержкой php на IPB 3 уже известно Прежде всего, добавляем в скрипт функцию перекодирования cp1251 в utf8 (поскольку мазохистский движок phpbb3 работает именно в этой кодировке, а функция utf8_encode, встроенная в не менее мазохистский язык php, не умеет работать с кодировкой cp1251): Код function toutf8 ($txt) { $in_arr = array ( chr(208), chr(192), chr(193), chr(194), chr(195), chr(196), chr(197), chr(168), chr(198), chr(199), chr(200), chr(201), chr(202), chr(203), chr(204), chr(205), chr(206), chr(207), chr(209), chr(210), chr(211), chr(212), chr(213), chr(214), chr(215), chr(216), chr(217), chr(218), chr(219), chr(220), chr(221), chr(222), chr(223), chr(224), chr(225), chr(226), chr(227), chr(228), chr(229), chr(184), chr(230), chr(231), chr(232), chr(233), chr(234), chr(235), chr(236), chr(237), chr(238), chr(239), chr(240), chr(241), chr(242), chr(243), chr(244), chr(245), chr(246), chr(247), chr(248), chr(249), chr(250), chr(251), chr(252), chr(253), chr(254), chr(255) ); $out_arr = array ( chr(208).chr(160), chr(208).chr(144), chr(208).chr(145), chr(208).chr(146), chr(208).chr(147), chr(208).chr(148), chr(208).chr(149), chr(208).chr(129), chr(208).chr(150), chr(208).chr(151), chr(208).chr(152), chr(208).chr(153), chr(208).chr(154), chr(208).chr(155), chr(208).chr(156), chr(208).chr(157), chr(208).chr(158), chr(208).chr(159), chr(208).chr(161), chr(208).chr(162), chr(208).chr(163), chr(208).chr(164), chr(208).chr(165), chr(208).chr(166), chr(208).chr(167), chr(208).chr(168), chr(208).chr(169), chr(208).chr(170), chr(208).chr(171), chr(208).chr(172), chr(208).chr(173), chr(208).chr(174), chr(208).chr(175), chr(208).chr(176), chr(208).chr(177), chr(208).chr(178), chr(208).chr(179), chr(208).chr(180), chr(208).chr(181), chr(209).chr(145), chr(208).chr(182), chr(208).chr(183), chr(208).chr(184), chr(208).chr(185), chr(208).chr(186), chr(208).chr(187), chr(208).chr(188), chr(208).chr(189), chr(208).chr(190), chr(208).chr(191), chr(209).chr(128), chr(209).chr(129), chr(209).chr(130), chr(209).chr(131), chr(209).chr(132), chr(209).chr(133), chr(209).chr(134), chr(209).chr(135), chr(209).chr(136), chr(209).chr(137), chr(209).chr(138), chr(209).chr(139), chr(209).chr(140), chr(209).chr(141), chr(209).chr(142), chr(209).chr(143) ); $txt = str_replace($in_arr,$out_arr,$txt); return $txt; } Затем загружаем файл статистики, и перекодируем его в UTF8: Код $content = toutf8(@file_get_contents("имя_файла")); После этого в переменной $content будет лежать содержимое файла, перекодированное в UTF8, и мы можем делать с ним все, что душе угодно. |
evg, serrrios, Milena, Saymon21 | ||
12.5.2010, 23:42 |
Trivia Mod API2 | Игра "Викторина" |
Прекрасно меняется. Главное - редактировать новую базу адекватным текстовым редактором (виндовый Блокнот таковым не является). |
Milena | ||
12.5.2010, 22:06 |
От: StatPX От темы с ID: 1269 |
serrrios Оно-то можно, только новая версия не за горами, и если после выхода ты захочешь обновиться - придется все переделывать по-новой. Может лучше чуток подождать? |
Saymon21 | ||
7.5.2010, 4:26 |
Функции Для Разработчиков склад полезных функций |
Не вижу проблему в установке локали - поставил локаль, инвертнул регистр, вернул локаль. Только работать такая функция будет раза в 2 медленнее, чем те, что выложил я.PS. Если вам не нравятся функции, выложенные мной - используйте другие. Я выложил их в надежде, что они окажутся полезными кому-нибудь, а вовсе не для того, чтобы развязать холивар. |
MIKHAIL | ||
6.5.2010, 16:12 |
Функции Для Разработчиков склад полезных функций |
Функции преобразования регистров: Код function string.lower2(s) return s:gsub("([А-Я])",function(str) return string.char(str:byte()+32) end):gsub("Ё", "ё"):lower() end function string.upper2(s) return s:gsub("([а-я])",function(str) return string.char(str:byte()-32) end):gsub("ё", "Ё"):upper() end Работают быстрее, чем все аналогичные функции, выложенные ранее в этой теме. __________________________________________________ Функция экранирования "волшебных" символов регулярных выражений Lua (собственно, даже не функция, а метод): Код :gsub("[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1") Метод необходим при использовании произвольных строк в качестве второго аргумента функций string.gsub(), string.match(), string.gmatch(). Пример: Код local result = data:gsub(str:gsub("[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1"),repl) Стоит напомнить, что в третьем аргументе функции string.gsub() необходимо экранировать символ %, иначе функция будет "съедать" этот символ, или вызывать ошибку "Invalid capture index". Экранирование производится так: Код repl:gsub("%%","%%%%") |
Nickolya, Alexey, Kingston, Saymon21, MIKHAIL | ||
6.5.2010, 12:44 |
FireBans API2 (Linux only) | Баны при помощи фаервола |
Андрей JuNiOr
При этом каждый бан будет сопровождаться мельканием консоли. |
Milena | ||
3.5.2010, 21:16 |
Lua-GD Библиотека для обработки изображений |
Nickolya, Milena, Kasteill | |||
2.5.2010, 9:30 |
Скрипт тестирования множеств в регулярных выражениях |
Версия Lua: 5.1 Автор: alex82 Описание: Данный скрипт наглядно демонстрирует, какие символы будут захвачены при использовании тех или иных множеств в регулярных выражениях Lua. Пример %a => A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z %c => \0 \1 \2 \3 \4 \5 \6 \a \b \t \n \v \f \r \14 \15 \16 \17 \18 \19 \20 \21 \22 \23 \24 \25 \26 \27 \28 \29 \30 \31 %d => 0 1 2 3 4 5 6 7 8 9 %l => a b c d e f g h i j k l m n o p q r s t u v w x y z %p => ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ %s => \t \n \v \f \r <space> %u => A B C D E F G H I J K L M N O P Q R S T U V W X Y Z %w => 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z %x => 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f %z => \0 [attachment=4459:capture_test.lua] |
Nickolya, intlive, Ksan, Milena, Saymon21, X-Sky, MIKHAIL | ||
16.4.2010, 14:11 |
Нужен скрипт freshstuff под PtokaX 0.4.1.2 Нужен нормально работающий скрипт freshstuff под PtokaX 0.4.1.2 |
Решение проблемы предельно простое - перейти обратно на 0.4.1.1 |
мамин_парень | ||
|
Сейчас: 23.11.2024, 6:11 |