myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
История благодарностей участнику alex82. Спасибо сказали: 1406
Дата поста: В теме: За сообщение: Спасибо сказали:
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
Цитата(Ksan @ 17.3.2011, 4:31) *
Это как это так резко число украинских хабов так далеко обогнало российских? big_smile.gif
Это я проверял новый пингер big_smile.gif
Цитата(Ksan @ 17.3.2011, 4:31) *
И что за хаб, который в статистике со шкалами обозначен как "Другой"? имею в виду - что за софт там..
Я полагаю, это FlexHubBeta
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" в лог ошибок. Так что переложить всю работу на него не получится big_smile.gif.

Но можно автоматизировать этот процесс чтобы не возиться с составлением заголовков при написании каждой страницы. Как только решусь писать продолжение, напишу об этом.
Milena
15.3.2011, 4:11 Создание динамических страниц с помощью Lua
Пишем сайты на Lua
Бытует мнение, что для создания динамических сайтов на языке, отличном от php, необходимо убить уйму времени на написание соответствующего модуля для вебсервера, и извести метр нервов на сборку этого модуля с помощью кривого компилятора от фирмы "Майкрософт". Однако, это далеко не так - писать сайты можно на любом языке, для которого имеется консольный интерпретатор. Теоретически, можно написать сайт на Ассемблере, собрав полученную программу как консольное приложение. Законченные извращенцы могут попробовать сделать сайт на том мерзопакостном "языке программирования", что используется в командной строке Windows. Но сегодня мы не будем заниматься извращениями, и попробуем написать сайт на каком-нибудь более простом и понятном языке. А именно - на Lua.

Для этого нам понадобятся:
  • Web-сервер Apache с включенным модулем mod_cgi.
  • Интерпретатор Lua. В качестве интерпретатора можно взять сборку LuaForWindows - она предельно простая в установке, и содержит практически все библиотеки, которые могут понадобиться для написания сайта.
  • Редактор исходного кода для редактирования конфигов и написания скриптов.
  • Бутерброды, пиво.
  • Ну и конечно же прямые руки, растущие из плеч.

Итак, начнем.

Для начала откроем файл конфигурации 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 doubt.gif .

Судорожно лезем в лог ошибок апача в надежде выяснить причину ошибки, и видим там следующее:
Цитата
[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
Цитата(Serx @ 14.3.2011, 13:43) *
при добавлении хаба выдало ошибку: пустая страница с надписью:
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, наконец вошел в стадию бета-тестирования, и стал доступен широкой публике. Попасть на хаблист можно по адресам hublist.bceti.com или hubs.bceti.com.

Все пожелания, возмущения и негодования можно оставлять в этой теме, либо в теме хаблиста на форуме BCETI.com (которая будет создана чуть позже big_smile.gif ).

Часто задаваемые вопросы
Как добавить свой хаб в хаблист?
Очень просто - с помощью этой страницы. На момент добавления хаб должен быть онлайн, и корректно отвечать на команду $BotINFO

Если мой хаб имеет несколько адресов, и я добавлю в хаблист их все, то будет ли мой хаб отображаться на нескольких страницах?
В хаблист встроен весьма продвинутый алгоритм проверки адреса, и у Вас навряд-ли получится добавить несколько адресов для одного хаба даже в том случае, когда на хаб ссылаются несколько доменов, и он работает на нескольких портах. Но даже если у Вам удастся это сделать, при следующем пинге все страницы будут перенаправлены на тот адрес, который был добавлен первым.

Как поступит хаблист в случае слияния моего хаба с другим?
При слиянии нескольких хабов, их страницы перенаправляются на страницу того хаба, который был добавлен раньше, а в таблице с информацией о хабе появляется поле "Дополнительные адреса", в котором перечисляются адреса всех перенаправленных хабов. При этом, страницы перенаправленных хабов не удаляются, и если Вы решите забрать свой домен, и снова запустить отдельный хаб, он будет отображаться по старому адресу.

Заметил что на страницах некоторых хабов отображаются их логотипы, а в ссылке на страницу хаба используется имя вместо ID. Можете сделать так же для моего хаба?
Можем. Для этого Вам необходимо предоставить логотип в формате PNG (желательно на белом или прозрачном фоне) размером не более 400x100 пикселей. Файл логотипа можно прикрепить в этой теме, либо отправить мне в личку, указав при этом ID хаба, либо ссылку на страницу хаба. Данная функция не предоставляется для хабов, существующих менее одного месяца. Логотипы, содержащие ненормативную лексику или изображения порнографического характера, либо выполненные в стиле "Унылое говно", не принимаются.

Может ли мой хаб оказаться в списке "Рекомендуем посетить"?
Если Ваш хаб работает круглосуточно, и по вечерам на нем собирается не менее 1000 юзеров, мы можем добавить Ваш хаб в список рекомендуемых. Взамен Вы должны разместить в сообщении дня ссылку на хаблист:
Цитата
Хаблист BCETI.com - http://hublist.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 минут - это и есть забота о нервах юзеров?

Цитата(Marc @ 20.2.2011, 22:09) *
Объясните почему нельзя пользователю при регистрации использовать тот пароль, к которому он привык, с ним сроднился, который уже в памяти у него и он не хочет менять его?
Я проще смотрю у себя на это и оставляю выбор за пользователем!
Потому что на большинстве хабов регистрация не обязательна, и используется только для защиты от спама. А юзер с паролем 123456 - потенциальная дыра в этой самой защите.

Если юзер не в состоянии придумать себе пароль, пусть сидит незарегистрированным. На файлообмен это никак не повлияет.
Milena
20.2.2011, 21:02 Stupid Pass
API2 | Удаление аккаунтов с небезопасными паролями
Цитата(Ksan @ 20.2.2011, 17:12) *
Неплохо было бы добавить функцию...
А зачем, собственно? Это одноразовый скрипт, который нужно использовать перед установкой того самого продвинутого скрипта регистрации.
Цитата
...которая при заходе юзера с некондиционным паролем позволяет ему зайти, но сообщает ему в чате и привате, чтоб поменял пароль на отвечающий требованиям безопасности (показать примеры)...и неплохо бы этому же юзеру, пока не исправит пароль, донимать псьмами в личку от бота (с тем же содержанием)...например, через каждые 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

Описание:
Данный скрипт предназначен для удаления аккаунтов с небезопасными паролями.
Небезопасными паролями считаются:
* Пароли, совпадающие с ником
* Пароли, состоящие менее чем из n символов
* Пароли, состоящие из одинаковых символов. Например: 111111, qqq, и.т.д.
* Пароли, состоящие из клавиатурных последовательностей. Например: qwerty, 123456, и.т.д.

[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{
    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",
}
Как видим, в таблице появился параметр secure, который включает использование безопасных соединений. Параметр может принимать следующие значения:
Код
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)
    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
Параметр sTableName указывать не обязательно. Параметры sTab и bComma используются при рекурсивном вызове функции. Следовательно, не нужно указывать их при вызове вручную.
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 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров
Цитата(LOPD @ 28.10.2010, 21:08) *
Ошибка StatPX_Lite.lua:206: attempt to call global 'GetChatRank' (a nil value) не понел в чём проблема вроде работал норм и тут ошибка.
Заменяем в строке 206
Код
GetChatRank
на
Код
GetRank

Pank1, ProGeTTo
24.10.2010, 15:38 StatPX Lite
API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров
Доступна версия 1.01 beta

Изменения:
Исправлено отображение символов $ и | в веб-логе чата
Добавлена возможность отправки сгенерированных страниц на удаленный FTP-сервер
Переписаны некоторые функции (обработка команд, отправка меню)
Исправлена ошибка, приводящая к увеличению числа сообщений в графиках главного чата при отправке команд
В чат-лог добавлена фильтрация kick-сообщений
Исправлена ошибка, не позволявшая просматривать статистику хаба при отключенной веб-статистике
Исправлено определение адресов локальной сети при генерации некоторых страниц веб-статистики
Добавлена возможность изменения стиля ссылки на текущую страницу
Исправлено экранирование символов переноса строки в веб-логе чата
И еще много-много мелких изменений
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&#124;


Все строки, не содержащие символа $ в начале или шаблона секции, считаются комментариями и не обрабатываются. Юзер-команды, найденные до обьявления первой секции, также игнорируются.
Группы прав доступа
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 | Статистика хаба
Цитата(RAND(i)M @ 15.10.2010, 0:49) *
alex82
1. Было бы неплохо приблизить список пользователей в WEB-статистике к привычному списку юзеров в ДЦ. т.е. сделать сортировку нечувствительной к регистру, и может даже поместить "ключканутых" вверх списка.
2. Скрипт создаёт пусту папку htdocs на диске C:, вроде все папки поменял, но он продолжает создавать, где именно в скрипте - я так и не нашёл.
1. Юзеров с ключом не получится переместить вверх без изменения формата БД, а сортировку хотел исправить, но забыл. Исправлю в следующей версии.
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-сервер
Добавлен топ пользователей по числу сообщений в чате
Добавлена возможность отключения сообщений о достижении рекордов
Переписаны некоторые функции (обработка команд, отправка меню, получение ранга)
Исправлена ошибка, не позволявшая удалять лог главного чата из сообщения дня
Исправлена ошибка, приводящая к увеличению числа сообщений в графиках главного чата при отправке команд
В чат-лог добавлена фильтрация kick-сообщений
И еще много-много мелких изменений
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

Я не претендую на эксклюзивность, так что можешь выкладывать свою. big_smile.gif

-----------------------------------------------------------------------

Небольшие исправления в заготовке #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]Отличается от первой тем, что позволяет устанавливать разные права доступа для команд.

Тем, кто ковырялся в моих скриптах, данный код может показаться знакомым, и в этом нет ничего удивительного - прочитайте еще раз первый абзац этого сообщения, и вы поймете почему big_smile.gif.
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 | Анекдоты из Интернета
Цитата(DEN 007 @ 2.10.2010, 4:26) *
Чтобы не было пустых вопросов?
В этом случае пустые вопросы все равно будут, ибо переменная 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
Цитата(xproffx @ 20.9.2010, 2:15) *
[02:58:27] <Bot> *** Error, script PXControl_Server.lua start failed.
Попробуй закомментировать
Код
if path:find("^/") then    -- OS detection
    require "lfs"    -- Linux
    bLinux = true
else
    require"pxlfs"    -- Windows
end
Если после этого скрипт запустится, проблема в неправильно установленной LFS
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 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров
Мдя, и в самом деле, фигню сморозил. extreme_sexy_girl.gif

Ладно, теперь серьезно. Находим в 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

Даже представляю, куда могла деться переменная, обьявленная в самом начале скрипта. amazing.gif
Может ты сам ее удалил? Или пытаешься подсунуть птоке файл конфигурации отдельно от скрипта?

Цитата(mariner @ 10.9.2010, 0:15) *
А ты в 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")
        if lastreg then
            lastreg:write(user.sNick)
            lastreg:close()
        end
К примеру, в скрипт Registrator этот код нужно добавить сразу после строк:
Код
        if tCfg.ShowToAll then
            ToAll("Поприветствуем нового зарегистрировавшегося участника - "..user.sNick.."!")
        end

Скины

pixabella green
Автор стиля: pixabella
Адаптация для StatPX: alex82

[attachment=5001:pixabella_green.rar]

pixabella pink
Автор стиля: pixabella
Адаптация для StatPX: alex82

[attachment=5002:pixabella_pink.rar]
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
База данных IP-To-Country
Библиотека Lua-GD ( http://mydc.ru/topic2356.html )
Веб-сервер (напр. Apache)

Автор: alex82

Описание: Скрипт представляет собой переделанный и дополненный StatPX. Основные отличия от оригинала:
* удалена база данных юзеров (со всеми вытекающими отсюда последствиями - топ хабберов и статистика посещаемости также пошли под нож)
* добавлено отображение страны юзера в списках
* добавлен топ стран
* тобавлен топ юзеров по количеству сообщений в чате


Возможности скрипта:

Статистика хаба:
учёт рекордов по размеру шары и количеству пользователей
* топ пользователей по размеру шары
* топ стран
* топ пользователей по количеству сообщений в главном чате

Web-статистика:
* топик хаба
* общая статистика хаба - время непрерывной работы, количество пользователей, общий размер шары, рекорды по размеру шары и количеству пользователей, количество забаненных пользователей
* ограничения хаба - минимальная шара, минимум слотов, и.т.д
* лог главного чата с поддержкой смайлов
* список пользователей онлайн
* топ пользователей по размеру шары
* топ пользователей по количеству сообщений в главном чате
* список забаненных пользователей
* список заглушек скрипта GagMe ( http://mydc.ru/topic1627.html )
* поддержка скинов

Скриншоты


Скачать:
[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
Цитата(Tsd @ 15.8.2010, 10:05) *
Хотелось бы чтобы можно в настройках указать с ключиком/без ключика с сохранением всех функций.
Насколько мне известно, права на просмотр статистики имеют все юзеры. А насчет всех функций - доступ к некоторым функциям (в частности, 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 | Статистика хаба
Цитата(averon.nv @ 14.8.2010, 18:45) *
ALex82
Спасибо, копирайт вернулся, но сейчас у изображения появился отступ первой строки и после него - как бы по середине стал - так и должно быть?
Нихрена не понял.
Цитата(averon.nv @ 14.8.2010, 18:45) *
И не отображается фукция «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
Цитата(Tsd @ 13.8.2010, 11:09) *
Можно ли добавить функцию - бот с ключиком/без ключика в списке на хабе?
Что-то не совсем понял. Куда добавить?

Если в серверную часть, то я не пойму нахрена ей нужна регистрация бота.
Milena
2.8.2010, 5:05 От: StatPX
От темы с ID: 1269
Ну вот, приехали. В моем скрипте без моего ведома появилась функция чат-ранга, а я узнаю об этом последним. waaaht.gif

А если серьезно...
...то это вовсе не чат-ранг, а звание топа хабберов - по проведенному на хабе времени. И в конфиге есть соответствующий комментарий:
Цитата
Ранги должны добавляться от самого низкого к самому высокому

{время,"Ранг"}

[время] - количество дней проведённых пользователем на хабе

Пример: {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: http://www.microsoft.com/downloads/details...;displaylang=en . Также можно в очередной раз пнуть фирму Майкрософт за столь "информативное" сообщение об ошибке bad_smile.gif .



Вопрос: Я написал скрипт на 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 Ваши Вопросы И Предложения По Поводу Форума
  • Скачивание файл-листа, nmdc
  • SQL & Hub

Это вроде как в "Всё о 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 прекрасно умеет устанавливать себя как системную службу.

  • Установка сервиса:
    Код
    PtokaX.exe -i "имя сервиса"
    Аналог:
    Код
    PtokaX.exe /install "имя сервиса"
  • Удаление сервиса:
    Код
    PtokaX.exe -u "имя сервиса"
    Аналог:
    Код
    PtokaX.exe /uninstall "имя сервиса"
  • Запуск сервиса:
    Код
    PtokaX.exe -s "имя сервиса"
    Аналог:
    Код
    PtokaX.exe /service "имя сервиса"
  • Установка конфиг директории:
    Код
    PtokaX.exe -c "абсолютный путь до директории"
  • Получение версии:
    Код
    PtokaX.exe -v
    Аналог:
    Код
    PtokaX.exe /version
  • Помощь по командам:
    Код
    PtokaX.exe -h
    Аналог:
    Код
    PtokaX.exe /help
  • Отключение проверки ключа в $Key команде:
    Код
    PtokaX.exe /nokeycheck


Примеры:

Конфигурирование директории и установка сервиса:
Код
"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 | Статистика хаба
Цитата(WINS @ 13.7.2010, 18:17) *
одно интересное место в стате пользюка, обязательно такая космическая точность нужна? big_smile.gif

строку 433 меняем на эту:
Код
        FormatTime(math.round(tUserStat[IP].TotalTime/iAverage)).."\n\t- Ранг: "..GetRank(IP).."\n"


Цитата(WINS @ 13.7.2010, 18:17) *
И еще один момент: пишутся в лог любые русскоязычные команды, которые не перехватили вышестоящие скрипты.
Надо хотя-бы для приличия заглянуть в файл настроек. Там каждая настройка откомментирована.
Цитата
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))
Исправлена ошибка в функции просмотра топа хабберов (attempt to concatenate global 'sRank' (a nil value))
Небольшое исправление в шаблоне gagme.tpl
Исправление в логе чата: при отправке в чат сообщения от третьего лица (команда !me), лог чата не обновлялся.
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
Я тупо забыл добавить в архив файл конфига. beat_brick.gif

Перезалил архив.
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
Цитата(brauzer84 @ 17.6.2010, 21:10) *
ребят...мож знает кто как добавить ссылку на сам клиент для игры...

После этого:
Код
                    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
        -- blablabla
    else
        error("Файл "..fOnline.." не найден.")
    end
Отсюда следует, что птока не просто открывает файл, а пытается загрузить его как порцию Lua, и не может, поскольку в файле есть синтаксическая ошибка.

Чтобы узнать, где именно ошибка, сделай так:
Код
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 | Статистика хаба
Цитата(Angel_D @ 22.5.2010, 16:37) *
Возраст хаба - хотелось бы что б это была дата, которую можно было указать. Моему хабу, к примеру, не 15 минут отроду. big_smile.gif В 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
Цитата(serrrios @ 17.5.2010, 21:46) *
А планируется ли когда-нибудь портировать сей скрипт на RusHub? =)
Я об этом думал. Может возьмусь, как закончу пилить птоковую версию (если будет настроение).
Saymon21
14.5.2010, 20:35 StatPX
API1, API2 | Статистика хаба
Цитата(serrrios @ 14.5.2010, 17:07) *
alex82, спасиб за функцию, все сделал, работает отлично. WMR есть? Хоть на пивас подкину ;)
WMR нету, зато есть WMZ - Z843102502936 big_smile.gif


Цитата
alex82, как правильно запихнуть функцию перекодирования в utf8?)
Если заменить на
Код
$this->output = toutf8(@file_get_contents("имя_файла"));

старничка вовсе не отображается..
Пихай сразу после открывающего тега препроцессора (<?php или просто <?) - не ошибешься. И включи отображение ошибок PHP - не дело отлаживать скрипты вслепую.
Код
error_reporting  =  E_ALL
display_errors = On
(это в php.ini)
Milena
14.5.2010, 6:55 StatPX
API1, API2 | Статистика хаба
Цитата(Angel_D @ 14.5.2010, 1:41) *
Постановления обязующие хранить чуть ли не логи личек уже давно актуальны, но хоть это благо компенсируется пониманием исполнителей. Из запросов с которыми приходилось сталкиваться - "ник такой-то в такое-то время - какой IP адрес был?" Ответы на такие вопросы формулировкой "нет технической возможности" вполне могут закончится закрытием ресурса, как "несоответствующего требованиям постановления №...".
Проблема решается с помощью переноса хаба на выделенный сервер, находящийся в цивилизованной стране.
Беларусским патриотам
Можете сколько угодно брызгать слюной в монитор по поводу сказанного выше, но мое мнение останется неизменным - государство с ТАКИМИ законами нельзя считать цивилизованным.

Milena
13.5.2010, 22:19 StatPX
API1, API2 | Статистика хаба
Цитата(truth @ 13.5.2010, 21:44) *
Я не про phpbb говорю, а про форумный движок IPB.
Видимо померещилось... ops.gif Но это, по сути, мало что меняет.
Код
                $this->output = toutf8(@file_get_contents("имя_файла"));
                $this->title  = "Статистика хаба";

Не забудь добавить в скрипт функцию преобразования в utf8.
Milena
13.5.2010, 19:35 StatPX
API1, API2 | Статистика хаба
Цитата(Angel_D @ 13.5.2010, 18:34) *
Когда онлайн хаба 3.5-4к и файл базы до метров 9ти-10ти разрастается, начинает складываться ощущение, что сервер только тем и занимается, что работает с этим файлом. Если закрыть Птоху, то она закрываться будет минуту - две. Это нормально, или мне имеет смысл поискать потенциальный конфликт с другими скриптами?
Это нормально - Lua не умеет работать с такими большими объемами данных - вот оно и тупит. Экспериментальным путем было выяснено, что предел скрипта - 50 тысяч записей в базе. При достижении этого предела Lua умирает.

После выхода новой версии слеплю облегченный вариант скрипта - с веб-статистикой, но без статистики ников/IP.


Цитата(truth @ 13.5.2010, 18:40) *
А как насчет интеграции с IPB 3? big_smile.gif Добавляем дополнительную страницу со всей статой хаба.. иными словами: статистика в шаблоне форума (=
Было бы весьма популярно. Понимаю, что это не так легко, но авось выйдет. Как сделать доп. страницу с поддержкой php на IPB 3 уже известно big_smile.gif
Ну, тогда ничего не мешает подгрузить в эту страницу содержимое файла статистики.

Прежде всего, добавляем в скрипт функцию перекодирования 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 Функции Для Разработчиков
склад полезных функций
Цитата(Ksan @ 6.5.2010, 23:33) *
Не вижу проблему в установке локали - поставил локаль, инвертнул регистр, вернул локаль.
Только работать такая функция будет раза в 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 @ 2.5.2010, 16:35) *
А релиза либсы со всеми возможностями не предвидется?
Либу с freetype давно собрал, просто забыл выложить. А fontconfig подключить так и не получилось. unhappy.gif

Выложил новую сборку в первом посте
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 big_smile.gif
мамин_парень

14 страниц V  « < 2 3 4 5 6 > » 
RSS Сейчас: 23.11.2024, 6:11