myDC.ru

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

 
История благодарностей участнику Nickolya. Спасибо сказали: 776
Дата поста: В теме: За сообщение: Спасибо сказали:
17.3.2010, 19:32 Официальная страничка RusHUB
Внимание - вопрос
Господа, вы слегка не о том разговариваете, код всегда можно убрать в файл или достать оттуда, нам нужно немного другое, так что давайте не будем, хорошо? По моему мнению, статичные скрипты которые не изменяются в ходе работы надо убирать в файл ввиду того что они при следующем открытии страницы берутся браузером из кеша, что облегчает и страницу и работу веб-сервера. big_smile.gif
bot9ra
17.3.2010, 16:45 Ipgag V.3.01
API1 | навороченная заглушка юзеров
Это уже красивости... 1 значит 1, это минуты, в цифрах нули не пишутся в начале, вы ко всему будете придираться?
Попробуй заменить
Код
        tRESULT = ""..Hours..":"..Minutes..", "..Days.." "..Months.." 2"..string.rep("0",3-string.len(Years))..""..Years.." года"
на
Код
        tRESULT = ""..Hours..":"..(Minutes:len() ~= 1 and Minutes or "0"..Minutes)..", "..Days.." "..Months.." 2"..string.rep("0",3-string.len(Years))..""..Years.." года"
Kocha
17.3.2010, 11:22 Hub 3000 Online 100% Загрузки
Нет хуже засранного компа, на нем любой софт работает плохо, а домашний компьютер по определению является загаженым. Надо методом проб и ошибок выявить в чем проблема - может у тебя в винде стоит фаервол что блокирует все, может заражен вирусами, да много чего может быть, точно без диагностики тебе ничего не скажут. Я бы посоветовал попробовать поставить на другой раздел виндоус и запустить на нем только необходимое ПО - драйверы, фаервол и хаб + отключить все ненужные компоненты винды и посмотреть как будет вести себя унхаб.
Unians
14.3.2010, 23:33 Support
API2 | Комната техподдержки
Так допиши после
Код
    SendToRoom(bot,user.sNick.." вошёл в комнату")
вот такой код:
Код
    Core.SendPmToUser(user, bot, "Для того что бы добавить хаб в избранное наберите в чат то то, регистрация находится там то, ну и тд")
Exodus
14.3.2010, 20:50 Курсы Валют Цб
API2 | Скрипт-информатор. 18 валют на выбор.
Чтобы убрать сообщение "Данные устарели, запрашиваю сервер..." удали строку
Код
Core.SendToUser(user, "<"..sBotName.."> Данные устарели, запрашиваю сервер...")


А чтобы выводить данные в приват замени
Код
Core.SendToUser(user, "<"..sBotName.."> \n"..sMsg)
на
Код
Core.SendPmToUser(user, sBotName, "\n"..sMsg)
AfLc
14.3.2010, 18:49 Временные Операторы
API2 | Модерирование по графику
Немного переделал скрипт, попробуй. Он мог не срабатывать из-за торможения компа или странной работы хаба со временем, сейчас должен работать как было задумано.
Артём, rival, iimedia
14.3.2010, 17:13 Курсы Валют Цб
API2 | Скрипт-информатор. 18 валют на выбор.
Решение проблемы с ошибкой:
1. Заменить два раза
Код
while string.find(fd,"<Value>") do
на
Код
while string.find(fd,"<Valute ID=\".-\">") do

2. Заменить
Код
                    sMsg=sMsg..val[i].CharCode.."\t"..val[i].Nominal.." "..val[i].Name..string.rep("\t",math.floor((MaxLen-string.len(val[i].Name)-string.len(val[i].Nominal)+1)/8+1))..val[i].Value.."\t"..((val[i].Diff<0) and "" or "+")..val[i].Diff.."\n"
                    if sMidChar~="" and x<table.getn(Currency) then sMsg = sMsg..string.rep(sMidChar,iMidChar).."\n" end
на
Код
                    if val[i] then
                        sMsg=sMsg..val[i].CharCode.."\t"..val[i].Nominal.." "..val[i].Name..string.rep("\t",math.floor((MaxLen-string.len(val[i].Name)-string.len(val[i].Nominal)+1)/8+1))..val[i].Value.."\t"..((val[i].Diff<0) and "" or "+")..val[i].Diff.."\n"
                        if sMidChar~="" and x<table.getn(Currency) then sMsg = sMsg..string.rep(sMidChar,iMidChar).."\n" end
                    end
Invisible, Ksandor, Kar@bas, AfLc
14.3.2010, 16:23 Regme
API1, API2 | Скрипт регистрации
Попробуй править файлы в notepad++, это хороший редактор, в котором все правится как надо. Файл с измененными настройками что ты делал прикладываю, ошибок у меня не выдает...
Streter
14.3.2010, 16:16 Ipgag V.3.01
API1 | навороченная заглушка юзеров
На своем же компьютере стоит хаб? Если нет - могут быть различия во времени сервера и твоего клиента (винды), я проверил, все работает как надо:
Цитата
[16:12:43] <PtokaX> Вы были заглушены по IP до 16:21, 14 Марта 2010 года на приват и общий чат. Причина: "тест ( by Nickolya )"


Еще возможно ты пишешь 8m, а это гаг на 1 месяц и меняется только месяц, а время сохраняется, что правильно, а 8 минут будет как 8M, проверь все еще раз, в английском ли варианте ты вводишь время и напиши сюда что ты вписываешь во все поля.
Kocha
13.3.2010, 21:58 chat detector
Во-первых скрипт надо было сюда прикрепить, так удобней, это сделаю я:
CODE
sBot = " † X-Files™ Paranormal Reality † "
RankFile = "RankingScript\\ranksusers.tbl"
iNumb = 3000

Main = function()
dofile(RankFile)
end

ChatArrival = function(user, data)
local data = string.sub(data,1,-2)
local s,e,prefix =string.find(data, "%b<>%s+(%S+)")
if prefix == "!merecord" then
if tRankingTable[user.sName] then
if tRankingTable[user.sName] > iNumb then
user:SendPM(sBot, " \r\n\ ..-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°*•-.,_,.-•*°`*•-.,_,.-•*°°*•-.,_,.-•*°*•-.. \r\n\ \r\n\ "..user.sName.." \r\n\ Вы написали в чате "..tRankingTable[user.sName].." сообщений. \r\n\ Это превосходит нужное число в "..(iNumb-tRankingTable[user.sName]).." сообщений, поздравляем! \r\n\ Теперь, если вы хотите, вы можете добавить к своему нику ''Погоны'' \r\n\ К Примеру ваш ник <Коля> а в чате он будет выглядеть как < *** <Коля> *** > \r\n\ Вы сами выбираете что себе поставить! \r\n\ \r\n\ Небольшие правила. \r\n\
\r\n\ 1. Ваш ник должен быть не длиннее 10 символов. \r\n\ 2. ''Погоны'' не должны быть суммарно длиннее 10 символов. \r\n\ 3. Ваш ник должен быть без [Префикса]. \r\n\ 4. Суммарно измененный ник может быть не длиннее 25 символов. \r\n\ 5. Если вы придумали как будет выглядеть ваш ник пишите мне < » » »^† Fox Malder †^« « « > \r\n\ \r\n\ Администрация хаба. \r\n\ ")
else
user:SendPM(sBot, " \r\n\ ..-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°`*•-.,_,.-•*°*•-.,_,.-•*°`*•-.,_,.-•*°°*•-.,_,.-•*°*•-.. \r\n\ \r\n\ "..user.sName.." \r\n\ \r\n\ Вы наговорили всего "..tRankingTable[user.sName].." сообщений. \r\n\ До нужного числа вам не хватает "..(iNumb-tRankingTable[user.sName]).." сообщений. \r\n\ Удачи! \r\n\ Администрация хаба. \r\n\ ")
end
else
user:SendData("<"..sBot.."> Учёт ваших сообщений не найден.")
end
return 1
end
end

А переделанный под 2 апи и работу с бд скрипт в прикреплении.
*FoxMalder*
13.3.2010, 17:52 Скрипт для шары
Раскрывающийся текст
Простите за флуд конечно, давайте еще научим скрипты варить кофе и стирать рубашки, как вам идея?

Чем тебя не устраивает включенный клиент? Если держать его чисто для шары, как бота, то можно оставить 1 хаб и необходимую шару. А через любой другой клиент уже сидеть на хабах и скачивать файлы...
Wariner
11.3.2010, 20:48 Скрипт меню администрации
Менюшка админов для отдельной группы (API2)
Как что делать? Настроить эту таблицу под свои профили. Если не можешь сам - пиши в каком порядке они у тебя в хабе и кому нужен доступ.

Извиняюсь, я еще накосячил, перезалил исправленный скрипт в пост выше.
RoL
11.3.2010, 12:06 Вопросы по RusHub
Технические вопросы
Итак, прикладываю скрипт который создаст базу для РусХаба, если таковая уже имеется, то кладем ее рядом со скриптом, который надо положить в папку scripts птоки, запускаем скрипт и если файл с регистрациями лежит, то он перезапишется, при этом совпадающие регистрации не будут перезаписаны. В случае если вы не положили базу с регистрациями, создастся новая, пригодная для скрипта FirstRusHubBot под РусХаб.
Accelerator, Saymon21
10.3.2010, 23:19 Подскажите как посадить птоху на хост
Лучше поищи в интернете статьи о покупке доменов, там должно быть написано, и почитай еще обязательно вот это. Ты хочешь поддомен, он делается в панели управления доменом, покупать лучше там где тебе ее предоставят, порой это называется "dns регистратора", если регистратор не предоставляет таких услуг, то тебе придется искать сторонние днс на которых ты сможешь делать записи о своем домене.

А птока по-моему сидит на всех сетевых интерфейсах, лучше ее не "переконфигурировать", в поле адрес в самом хабе сделать 0.0.0.0 и не париться. А домен просто возвращает айпи после запроса на сервер DNS. Надеюсь доступно объяснил, что будет не понятно - спрашивай.
Wan
10.3.2010, 12:31 Официальная страничка RusHUB
Внимание - вопрос
Цитата(Wariner @ 9.3.2010, 18:16) *
А не сочтут ли это плагиатом?

Нет, это выложенный в паблик шаблон big_smile.gif

Цитата(PomanoB @ 9.3.2010, 21:05) *
Как вам такой вариант?

Да, правда ничего так, а можно посмотреть на нечто подобное в светлом варианте?
bot9ra
9.3.2010, 14:13 Официальная страничка RusHUB
Внимание - вопрос
Шаблона пока нет, это лишь наработки big_smile.gif Как будет достойный логотип и шаблон - все выложим.

Хочу предложить вот такой шаблон. Для Артема и всех нелюбителей "цветочков" сделаю кнопку чтобы эти "цветочки" убирались. Оцените...
Артём, bot9ra
9.3.2010, 13:53 Trivia Mod
API2 | Игра "Викторина"
Сорри, перезалил еще раз, теперь точно новый вариант.
steppnov
9.3.2010, 12:10 Trivia Mod
API2 | Игра "Викторина"
Добавь вот такой скрипт, только не забудь настроить как надо. Банально, но тебе думаю подойдет big_smile.gif
steppnov
9.3.2010, 11:38 ChatGuard
ChatGuard v1.2 API 2 Nickolya s fix
Invisible
9.3.2010, 11:30 Редирект для диапазона
Код
Core.Redirect(sAddress, sMsg)
замени на
Код
Core.Redirect(tUser, sAddress, sMsg)
и вообще скрипт должен был выдавать ошибку о которой стоило написать сюда.
truth
7.3.2010, 11:43 Домены Для Вашего Хаба
Как думаете?
Нет, luxemat, для этого айпи нельзя. Почему же?! По причине того что домен завязывается на айпи, по айпи может находтиться не только хаб, но и веб-сайт, а твой сайт мое сайтолюбие не одобряет. И вообще, люди, которые занимаются подобным "Заработком в интернете" мне не очень приятны... Делай выводы scorn.gif
Wan
6.3.2010, 14:11 Trivia Mod
API2 | Игра "Викторина"
Цитата(Kingston @ 6.3.2010, 3:53) *
Не воспринимает ответы регистра отличного от того что в файле beat_plaster.gif

В конец скрипта добавляй функцию
Код
string.String2Lower = function(s)
  for i = 192, 223 do
    s = s:gsub(_G.string.char(i), _G.string.char(i + 32))
  end
  s = s:gsub(_G.string.char(168), _G.string.char(184))
  return s:lower()
end

И в скрипте замени все
Код
string.lower
на
Код
string.String2Lower
Kingston, dj hoodo
3.3.2010, 11:46 Скрипт запрета в никах заглавных букв
Блин, вам все разжевывать надо как детям? Я переделал этот скрипт под одного человека из антикапса за 3 минуты, а вы придераетесь к комментариям... Займитесь чем-нибудь пополезнее лучше.
Wariner, Артём
2.3.2010, 15:31 WebServer
скрипт создающий веб-интерфейс для хаба
Выложил в 1 пост "новую" версию, постарался все по-быстрому описать, если что непонятно будет - спрашивайте.
Setuper, Saymon21
1.3.2010, 17:10 Trivia Mod
API2 | Игра "Викторина"
В моем посте 3 блока кода. Первый для примера, его трогать не надо! Второй блок - функция полностью, которую и надо польностью заменить в основном файле скрипта. Третий же блок показывает изменения в функции по отношении к ее старому варианту. Если все сделать правильно ошибок быть не должно. И читайте внимательней что написано, пожалуйста big_smile.gif
RomanGTe
1.3.2010, 16:38 Trivia Mod
API2 | Игра "Викторина"
По аналогии с
Код
[TrivUserStart] = function(curUser)
    if tConf.allowuserstart == 1 then
        if Started then
            SendMsgToUser(curUser,"Ошибка: Викторина уже запущена.")
        else
            UserAutostop = tCfg.UserAutostop
            TriviaStart()
            SendMsgToPlayers("Игра Викторина была запущена! Запустил: "..curUser.sNick..". Игра будет автоматически остановлена, если на "..UserAutostop.." вопросов подряд не будет дан правильный ответ.")
        end
    else
        SendMsgToUser(curUser,"Извините, у Вас нет доступа к этой команде.")
    end
end
добавляем в ParseData некоторый код и получаем вот такую функцию, ее надо польностью заменить в скрипте:
Код
function ParseData(curUser,data)
    data = string.sub(data,1,string.len(data)-1)
    local _,_,sdata = string.find( data, "^%b<>%s(.*)$")
    local _,_,pre,cmd = string.find( data, "^%b<>%s*(%p)(%S+)")
    if (pre and cmd) and pre == CPrefix then
        cmd = string.lower(cmd)
        if tProfiles[curUser.iProfile] == 1 and tFuncCmd[cmd] then
            tFuncCmd[cmd](curUser,data)
            return true
        end
        if tProfilesConfig[curUser.iProfile] == 1 and tFuncConfig[cmd] then
            tFuncConfig[cmd](curUser,data)
            return true
        end
        if tProfilesConfigPlus[curUser.iProfile] == 1 and tFuncConfigPlus[cmd] then
            tFuncConfigPlus[cmd](curUser,data)
            return true
        end
    elseif sdata then
        if sdata == "Викторина" or sdata == "викторина" then
            if tConf.allowuserstart == 1 then
                if Started then
                    SendMsgToUser(curUser,"Ошибка: Викторина уже запущена.")
                else
                    UserAutostop = tCfg.UserAutostop
                    TriviaStart()
                    SendMsgToPlayers("Игра Викторина была запущена! Запустил: "..curUser.sNick..". Игра будет автоматически остановлена, если на "..UserAutostop.." вопросов подряд не будет дан правильный ответ.")
                end
            else
                SendMsgToUser(curUser,"Извините, у Вас нет доступа к этой команде.")
            end
        end
        local corrans = nil
        for _,v in ipairs(TrivData.Answers) do
            if string.lower(sdata) == string.lower(v) then
                corrans = v
            end
        end
        if corrans and (not TrivData.GetQuestion) then
            TrivData.GetQuestion = true
            local ansTime = string.format("%.2f",(os.clock()-TrivData.Start)) -- Get Answering Time in sec.
            local talked = nil
            if string.lower(sdata) == string.lower(corrans) then
                talked = corrans
            end
            if talked then
                if tConf.mode ~= "pm" then
                    if tCfg.maintoall then
                        Core.SendToAll("<"..curUser.sNick.."> "..corrans)
                    else
                        SendMsgToPlayers(corrans,curUser)
                    end
                end
                local tmpstring = ""
                if (tCfg.showcorrectanswer == 1) then
                    tmpstring = " Время: "..ansTime.." секунд(ы)."
                end
                SendMsgToPlayers("На этот вопрос правильно ответил: "..curUser.sNick..", Ответ был: \""..corrans.."\". Очки: "..TrivData.Points.."."..tmpstring)
                if _Scores[curUser.sNick] then
                    _Scores[curUser.sNick].Score = _Scores[curUser.sNick].Score + TrivData.Points
                    _Scores[curUser.sNick].AvTime[1] = _Scores[curUser.sNick].AvTime[1] + ansTime
                    _Scores[curUser.sNick].AvTime[2] = _Scores[curUser.sNick].AvTime[2] + 1
                    _Scores[curUser.sNick].AvTime[3] = tonumber(string.format("%.2f",_Scores[curUser.sNick].AvTime[1]/_Scores[curUser.sNick].AvTime[2]))
                else
                    _Scores[curUser.sNick] = {}
                    _Scores[curUser.sNick].Score = TrivData.Points
                    _Scores[curUser.sNick].Streak = 1
                    _Scores[curUser.sNick].AvTime = { tonumber(ansTime),1,tonumber(ansTime) }
                end
                if (tCfg.showcorrectanswer == 1) then
                    SendMsgToPlayers(curUser.sNick..": Всего очков: ".._Scores[curUser.sNick].Score..", Правильных ответов: ".._Scores[curUser.sNick].AvTime[2]..", Среднее время на ответ: "..string.format("%.2f",_Scores[curUser.sNick].AvTime[3]).." секунд(ы).")
                end
                if TrivData.Availans > 1 then
                    ShowAnswer()
                end
                UpdateStreak(curUser)
                if not CheckAutostop() then
                    ResetMainTimer()
                end
                return true
            end
        end
    end
end
тут кусок
Код
        if sdata == "Викторина" or sdata == "викторина" then
            if tConf.allowuserstart == 1 then
                if Started then
                    SendMsgToUser(curUser,"Ошибка: Викторина уже запущена.")
                else
                    UserAutostop = tCfg.UserAutostop
                    TriviaStart()
                    SendMsgToPlayers("Игра Викторина была запущена! Запустил: "..curUser.sNick..". Игра будет автоматически остановлена, если на "..UserAutostop.." вопросов подряд не будет дан правильный ответ.")
                end
            else
                SendMsgToUser(curUser,"Извините, у Вас нет доступа к этой команде.")
            end
        end
отвечает за команду в чате, меняйте сами как хотите
RomanGTe, TiGRpp
1.3.2010, 12:57 WebModule
RusHub | Модуль для встроенного web-сервера
Для картинки отправляется заголовок Content-Type: тут_тип_данных
Для JPGи к примеру будет
Цитата
Content-Type: image/jpg
А вообще ответ сервера выглядит примерно так (это наш форум такое отправляет big_smile.gif тело страницы я написал сам для наглядности):
Код
HTTP/1.1 200 OK
Server: nginx/0.5.33
Date: Mon, 01 Mar 2010 09:56:00 GMT
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.2.4-2ubuntu5
Set-Cookie: session_id=0fffb2dabc4079d55874a47231ea0ee2; path=/; httponly

<html>
<head>
</head>
<body>
</body>
</html>
Setuper
27.2.2010, 14:07 Ptokax Как Системная Служба.
Фоновая работа PtokaX
Дублирую инфу с ссылки выше для Вашего удобства:

Цитата
У вас когда-нибудь возникало желание запустить приложение как системную службу? Думаю, что да, учитывая, что в некоторые программы такая возможность встроена по-умолчанию. А знаете ли вы, что приложение запущенное как служба, работает гораздо быстрее и занимает меньше места в памяти?

В этой статье мы рассмотрим небольшую утилиту Any Service (приложена к этому посту в архиве), которая в два щелчка мышки, поможет запустить любое приложение как системную службу. Any Service является оболочкой двух стандартных утилит srvinstw и instsrv из комплекта Windows 2000 Server и для ее нормальной работы вам будут необходимы права Администратора.

Программа полностью бесплатна, занимает всего 49Кб и не требует установки. Интерфейс интуитивно понятен и снабжен детальными пояснениями в виде всплывающих подсказок.

Главное окно программы позволяет произвести первичные настройки вашей будущей службы:

[attachment=4134:anyservice1.gif]

В первом поле вводим полный путь к исполнительному файлу приложения, которое будет запускаться как служба. В графе "Имя службы" указываем, как будет называться наша служба. В "Описание службы" - любое понятное вам описание нового сервиса.

Далее можно проставить нужные галочки:
  • Взаимодействие с рабочим столом - отметьте, если приложение имеет иконку в системном лотке;
  • Автозапуск службы - отметьте, если хотите, чтобы сервис запускался автоматически;
  • Запустить сразу после создания - отметьте, если хотите, чтобы служба запустилась сразу после ее создания;


Известные проблемы: перед первым запуском, желательно отключить антивирусную программу иначе дальнейшая работа программы будет невозможна, т.к. при первом запуске, она ищет обе утилиты (srvinstw и instsrv) в папке %WINDIR%\System32\ и если не находит, копирует их из собственного ресурса.
Tsd
26.2.2010, 11:19 NoLimit 1.3
API1, API2 | Скрипт запрета определенных ограничений скорости отдачи
Лимит узнается только тогда когда юзер отправит строку майинфо, в принципе все будет так как вы хотите если заменить
Код
    if tCurUser.bConnected then
        CheckLimit(tCurUser)
    end
на
Код
    CheckLimit(tCurUser)
thehawk
26.2.2010, 11:01 Функции Для Разработчиков
склад полезных функций
В библиотеке LuaSocket есть модуль URL в котором есть функция заменяющая URICoding:
Цитата
url.escape(content)

Applies the URL escaping content coding to a string Each byte is encoded as a percent character followed by the two byte hexadecimal representation of its integer value.

Content is the string to be encoded.

The function returns the encoded string.
Код
-- load url module
url = require("socket.url")

code = url.escape("/#?;")
-- code = "%2f%23%3f%3b"

Аналогично можно перевести из полученной строки в обычный текст, надо перекодировать из утф, заменить + на пробел и применить к строке функцию url.unescape
Setuper, Serx, Kingston, MIKHAIL
23.2.2010, 16:30 Скрипт запрета в никах заглавных букв
Спасибо, мой косяк, поправил в посте выше, теперь работает?
thehawk
23.2.2010, 15:50 Скрипт запрета в никах заглавных букв
Код
-- Размер сообщения с которого начинает реагировать скрипт:
iCheckSize = 5

-- Процент капса, при котором сработает скрипт:
iPersents = 60

ValidateNickArrival=function(sUser,sData)
    if isYELL(sUser.sNick) then
        Core.SendToUser(sUser, "*** Ваш ник не должен быть в КАПСовом виде!")
        Core.Disconnect(sUser)
    end
end

isYELL=function (sData)
    local flag=false
    local nsp = sData:gsub ("[%s%p%c]", "")
    if nsp:len() > iCheckSize then
        local NoSpacesLen = nsp:len()
        local NoCAPSLen = (nsp:gsub("[%uА-ЯЁ]", "")):len()
        if (NoSpacesLen - NoCAPSLen)/NoSpacesLen * 100 > iPersents then
            flag=true
        end
    end
    return flag
end

По-быстрому сделал, не проверял.
thehawk
21.2.2010, 21:08 TopicTemp
API2 | Температура воздуха в топике хаба
Бывает скрипт отключается после ошибки в этой строке:
Код
    if not tTemp[tCity[tData.City]] or tTemp[tCity[tData.City]][2]+tCfg.Update*60 < os.time() then

Для того чтобы убрать ошибку мы меняем строку на
Код
    if not tTemp[tCity[tData.City]] or not tTemp[tCity[tData.City]][2] or tTemp[tCity[tData.City]][2]+tCfg.Update*60 < os.time() then


Плюсом я бы еще советовал приписать после
Код
    http = require("socket.http")
вот такую строку:
Код
    http.TIMEOUT = 10
где 10 - таймаут на получение страницы в секундах, у кого хорошее соединение, те могут занижать эту цифру, при плохом соединении мы наоборот увеличиваем таймаут. Без этой приписки таймаут стандартный - 60 секунд.
Dr_Pilulkin™
21.2.2010, 17:05 замена стандартной команде !stat
Этот Франкенштейн вполне себе неплохо собран big_smile.gif Убили комментарии в самом конце скрипта big_smile1.gif Вот здесь
Код
function UserConnected(user)
    Core.GetUserAllData(user)
вторая строка лишняя т.к. несет только лишнюю нагрузку...

И еще мне показалось что слишком много конкатенаций.. Подумай как это можно исправить, на заметку тебе метод здешних мастеров: string.format
Плюсом функции берущие аптайм надо внести в реакцию на команду, мне кажется работает оно у тебя не сильно правильно.
Saymon21
21.2.2010, 13:31 Hub's Big Ass Bot
API2 | HUBBABOT v.2.28
Попробуйте заменить код
Код
function ConnectToMeArrival(sUser,sData)
    Core.GetUserAllData(sUser)
    local _,_,towho = string.find(sData, "%p%S+%s+(%S+)%s+.*|")
на
Код
function ConnectToMeArrival(sUser,sData)
    Core.GetUserAllData(sUser)
    local _,_,towho = string.find(sData, "^%p%S+%s+(%S+).*|$")

Это 848 строка в файле hubbabot2.lua
mastersweet
21.2.2010, 13:13 WebServer
скрипт создающий веб-интерфейс для хаба
Цитата(Nickolya @ 21.2.2010, 12:49) *
И по-идее запрос заканчивается пустой строкой, по которой можно судить об окончании запроса.

Попробуй этот метод, я думаю так все и происходит. Т.е. фактически запрос полностью вот такой:
Цитата
GET / HTTP/1.1\r\n
Host: www.example.com\r\n
User-Agent: MyLonelyBrowser/5.0\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n
(пустая строка)

Луа событие конечно лучше всего по окончанию всего запроса.
Setuper
21.2.2010, 12:49 WebServer
скрипт создающий веб-интерфейс для хаба
Замечательно! Конечно поможем, благодаря тому творению что ты видишь выше, я немного изучил работу веб-сервера. Рассказываю.
Неразрываемое соединение в принципе, как мне кажется, немного ускоряет работу клиента т.к. он прогоняет несколько запросов через 1 поток соединения, но повышается нагрузка на сам сервер т.к. ему приходится держать соединение пользователя. Так что для начала не советую заморачиваться и сделать закрывающий после каждого запроса соединение сервер. Это осуществляется отсылкой заголовка
Цитата
Connection: close
и закрытем соединение сразу после передачи всех данных. Потом если будет желание доработаешь сервер со всяким изюмом big_smile.gif
По поводу определения команд протокола не стоит особо заморачиваться. В самом начале клиент посылает запрос состоящий из заголовков + еще может быть дополнительное тело сообщения, в котором передаются POST данные. Все заголовки начинаются с новой строки с переносом \r\n к примеру (взято из вики, про все остальное читать там):
Код
GET / HTTP/1.1
Host: www.example.com
User-Agent: MyLonelyBrowser/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
И по-идее запрос заканчивается пустой строкой, по которой можно судить об окончании запроса. Конечно для защиты надо сделать определенное ограничение для получения заголовков. При наличии POST-данных, мы получаем от клиента ровно столько байт, сколько указано в заголовке
Цитата
Content-Length: 1024
это число конечно тоже надо ограничивать дабы избежать перегрузок сервера, POST-данные идут через пустую строку от заголовков (взято еще из вот этой очень понятной статьи):
Цитата
POST http://www.site.ru/news.html HTTP/1.0\r\n
Host: www.site.ru\r\n
Referer: http://www.site.ru/index.html?#092;r\n
Cookie: income=1\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 35\r\n
\r\n
login=Petya%20Vasechkin&password=qq

Если что непонятно - спрашивай, буду очень сильно рад помочь. Спасибо за разработки!
Setuper
17.2.2010, 22:01 Chase_cmd
API2 | Показывает команды используемые юзерами
Это уже моя вольность, простите, привычка. Чтобы сделать только + замени следующее
Код
local sCmd = sData:match"^%b<>%s+%p(%S+)"
на
Код
local sCmd = sData:match"^%b<>%s+%+(%S+)"
DrakonSP
17.2.2010, 16:12 Ваши Вопросы И Предложения По Поводу Форума
Попробовал вылечить баг с символами в начале и конце кода html в форуме, вроде как оно появляется из-за работы совместно с nginx при отправке апачем заголовка 200 OK, который являлся излишним. Сейчас посмотрите пожалуйста, если у кого вновь всплывет баг - отписывайтесь. Баг заключается в том что в браузерах кроме ие в самом начале страницы выводится 4 символа и цифра 0 в самом конце страницы. Так же подобное возможно при использовании аяксовой части форума.
Setuper
16.2.2010, 23:03 Запрет символов в никах и цифровых ников
Запрет символов в никах и цифровых ников
Цитата(DrakonSP @ 16.2.2010, 22:37) *
if tUser.sNick:find""..sbansymbol.."" then

В функцию можно передавать текстовый параметр целиком, без конкатенация, записывая его без скобок, во всех иных случаях скобки нужны (я предпочитаю их использовать всегда):
Код
    if tUser.sNick:find(""..sbansymbol.."") then
DrakonSP
16.2.2010, 22:58 Chase_cmd
API2 | Показывает команды используемые юзерами
Вот, слепил из того что выше.
DrakonSP, OVERLORD1979, Saymon21, TiGRpp
16.2.2010, 22:20 Запрет символов в никах и цифровых ников
Запрет символов в никах и цифровых ников
Условие and означает что в нике должны быть оба символа для его истинности. По-идее если надо проверить наличие одного из символов будет вернее использовать именно
Код
tUser.sNick:find"([%!@])"
DrakonSP
9.2.2010, 12:54 меню
1. Спецсимволы в регулярках надо экранировать:
Код
    local sCmd = sData:match"^%b<>%s+[!+-/*](%S+)"
потом действие
Код
    local sData = sData:sub(1,-2)
немного лишнее если все учесть в регулярке, а вообще надо бы написать проще:
Код
function ChatArrival(tUser, sData)
    local sCmd = sData:match"^%b<>%s+%p(%S+).*|"
    if sCmd == "usermenu" then

Мое замечание о команде удаления меню было проигнорировано, а зряbig_smile.gif
На сколько я помню это команда
Код
$UserCommand 255 15

Единственное, это снесет все меню, но на озерках это грамотно учтено т.к. меню не разбросано по скриптам а все в 1 боте big_smile.gif
Можно попробовать указать меню как аргумент, но не знаю получится ли, протестируйте, потом отпишите как, к примеру
Код
$UserCommand 255 15 Информация для "..tUser.sNick.."\\$|"
или
Код
$UserCommand 255 15 Информация для "..tUser.sNick.."$|"
Wariner, FallenAngel, Saymon21, TiGRpp
8.2.2010, 0:25 Кик с умножением времени
5м*10м*20м*40м...
Добавил работу с $Kick, однако в этом случае невозможно узнать причину бана т.к. она идет отдельно в сообщении в чат. Попробуйте big_smile.gif
X-Sky
7.2.2010, 23:34 Прогноз погоды на pogoda.cheb.ru
перевести на API2
Немного переделал, а то этот конвертер все коверкает, специфика библиотеки сокетов учтена, сейчас скрипт должен работать еще лучше и стабильней, пробуй. Для работы нужна библиотека сокетов.
ZZZZZ
7.2.2010, 22:39 Кик с умножением времени
5м*10м*20м*40м...
Как попросили, - так и сделал, что первое пришло в голову, т.е. как я понял задумку. Если надо переделать - позже сделаем. Все упирается в тех кому нужен скрипт...
X-Sky
7.2.2010, 17:36 Кик с умножением времени
5м*10м*20м*40м...
Сделал, тестируем и выкладываем в готовые если все ок. Вот настройки скрипта:
Раскрывающийся текст
Код
iKickKoef = 2    -- коэффициент для кика, на это число умножается время бана каждый раз
iWeBeginBanTime = 5        -- время для умножения на коэффициент

sBot = ""    -- бот скрипта, если указать "", то возьмется бот хаба

-- таблица тем кому будут доступны команды скрипта и кого нельзя будет банить этими командами:
tAccessProfiles = {
    [0] = true,
    [1] = true,
    [2] = true,
    [3] = false,
    [-1] = false,
}

sFile = "dkick.tbl"    -- файл для сохранения

sKickCmd = "dkick"    -- команда кика
sClearKickCmd = "cleardkick"    -- команда обнуления коэффициента для ника
sClearAllKicksCmd = "clearalldkick"    -- команда обнуления коэффициента для всех
sShowKickCmd = "showdkicks"    -- команда показа коэффициента для ника
sShowAllKickCmd = "showalldkicks"    -- команда показа коэффициента для всех
Saymon21, X-Sky
7.2.2010, 15:46 Сохранение из таблицы в хтмл файл
Если в файле таблица tHub, то добавляем просто сохранение после загрузки:
Код
local sFile = Core.GetPtokaXPath().."scripts/файл.txt"

function LoadData()
   if loadfile(sFile) then
       dofile(sFile)
   end
   SaveToHtml()
end

LoadData()
Вызов фунции LoadData() загрузит данные из файла и сохранит в шаблон html.
intlive
5.2.2010, 13:29 Help
Тут все не так сложно, главное понимать что ты делаешь и как сделать поумнее и похитрее. Ищешь ты кнопки как на магнитофоне, при нажатии на красный круг начинается запись всех твоих дейстий, так вот к примеру нам надо добавить в конец всех наших строк вот такие символы: "},
Для этого мы выставляем курсор в первую запись без этого сочетания на нужное положение, т.е. в конец, жмем красный кружок, запись пошла...
Теперь мы вписываем наше сочетание "},
Затем жмем стрелку вниз чтобы перейти на следующую строку и затем кнопку End для контроля того что курсор на конце строки, теперь останавливаем запись нажатием на черный квадрат рядом с уже не активным красным кругом, все, мы сделали запись, теперь плей (треугольник) повторит наше действие, а два треуголника сделают это указанное количество раз. Чтобы отформатировать весь документ мы запускаем многократное "проигрывание" действия "до конца" и наблюдаем результат big_smile.gif Пробуйте...
FallenAngel, Артём
4.2.2010, 17:12 Help
Код
OpConnected = UserConnected
RegConnected  = UserConnected
это лишнее, а не работает скорее всего из-за логики блокировки:
Код
  if tAviableNicks[tUser.sNick] == 1 then

Код
--Ники Исключения
tAviableNicks = {
        ["Артём"] = 0,
        ["ВашНик"] = 1,
        }

у тебя сделано так: если в таблице и значение равно 1 то идет проверка, попробуй переделать на
Код
  if tAviableNicks[tUser.sNick] and tAviableNicks[tUser.sNick] ~= 1 or not tAviableNicks[tUser.sNick] then
и тогда у тех кого нет в таблице или значение не равно 1 будет идти проверка ника...
Invisible, Артём
4.2.2010, 13:00 Help
Пожалуйста, в ноутпаде++ есть замечательная штука - макросы, я сделал все буквально за минуту big_smile.gif
Артём
4.2.2010, 11:55 Домены Для Вашего Хаба
Как думаете?
Цитата(Saymon @ 4.2.2010, 0:20) *
cheb-p2p.mydc.ru --> 10.128.162.28

Для тебя сделаю, пожалуйста, мне не жалко big_smile.gif
Saymon21
30.1.2010, 20:19 Домен .ru для хаба
Мне контора не понравилась, не знаю что там и как, отзывы не смотрел, просто возможны некоторые проблемы потом, купив подешевле сейчас. Скажу вам что купить можно и за 90 рублей, но что она вам сэкономленная десятка в год??? Я по-прежнему остаюсь верен вебмани, те же 110 рублей, продление 150 по-моему, но хоть не за 500 как на некоторых сайтах, советую.
X-Sky
28.1.2010, 10:50 Time
API2 | Показ времени в гл. чате
Фишки никто не отменял, а нужность пусть каждый для себя определяет. Вот мне может не надо электричество, давайте перейдем в век палки-копалки?
X-Sky
28.1.2010, 10:47 Кик с умножением времени
5м*10м*20м*40м...
Идея мне нравится, сделаем big_smile.gif
Saymon21, X-Sky
27.1.2010, 14:56 Обсуждение первого API
Я думаю ты прав Илюх, пора забивать на это, единственное если есть хороший скрипт, то почему бы его не перевести, правда я такие редко встречаю big_smile.gif Мне кажется не так и много запросов перевода, а основную массу уже перевели, так что даже не знаю как быть big_smile.gif
Вообще старье не нужно однозначно! А на старых версиях хаба людей держит нежелание искать весь функционал скриптов под новый хаб, настраивать все заново и прочее, короче незнание и лень, что показывает небрежность и некомпетентность самого админа big_smile.gif
Wariner, thehawk
27.1.2010, 14:40 RecordBot и TopHubbers
1. Надо писать в теме скрипта если он существует, это тебе на будущее.
2. Что если попробовать запустить это все на 0.4.1.1?
3. В обоих скриптах относительный путь к папкам, попробуй это поправить:

в RecordBot заменить
Код
    fRecord = "scripts/records.tbl",
    fConfig = "scripts/config.tbl",
на
Код
    fRecord = Core.GetPtokaXPath().."scripts/records.tbl",
    fConfig = Core.GetPtokaXPath().."scripts/config.tbl",

А в Tophubbers заменить
Код
    fOnline = "scripts\\tOnliners.tbl",
на
Код
    fOnline = Core.GetPtokaXPath().."scripts/tOnliners.tbl",
и запускать скрипты только при включенном хабе!
denis
25.1.2010, 16:17 Предложения для развития
Wariner, юнный падаван, оптимальней наверно будет делать как твой тезка, автор хаба. В его варианте будет вот так:
Код
local sBot = "Bot"
local iMinLen = 3      -- минимальное количество символов
local iMaxLen = 13   -- максимальное количество символов

function OnValidateNick(UID)
    local iNickLen = Core.GetUser(UID, 1).sNick:len()
    if iNickLen < iMinLen then
        Core.SendToUser(UID, ("Ваш ник слишком короткиий! Минимальное количество символов в нике для входа на хаб составляет %d !"):format(iMinLen), sBot)
        Core.Disconnect(UID)
    elseif iNickLen > iMaxLen then
        Core.SendToUser(UID, ("Ваш ник слишком длинный! Максимальное количество символов в нике для входа на хаб составляет %d !"):format(iMaxLen), sBot)
        Core.Disconnect(UID)
    end
end

Если конкретно, то я про конструкцию вида
Код
sNick = Core.GetUser(UID, 1).sNick

Да и ник бота будет вот таким big_smile.gif
Код
sBot = Core.GetConfig("sHubBot")
fixx
24.1.2010, 20:05 Домены Для Вашего Хаба
Как думаете?
Цитата(Saymon @ 24.1.2010, 19:55) *
coolhub.mydc.ru <- coolhub.sytes.net

Есть.
Saymon21
24.1.2010, 16:01 WebServer
скрипт создающий веб-интерфейс для хаба
Цитата(Nickolya @ 23.1.2010, 16:23) *
Скрипт по умолчанию работает на 81 порту, и пароль и логин по умолчанию admin, меняется это все в начале самого скрипта.

Otshelnik-Fm, читаем 1 пост внимательнее...

Цитата(Setuper @ 24.1.2010, 15:30) *
Первые шаги по написанию веб-морды.
Помнится кто-то говорил, что lua сокеты глючат (не знаю не проверял). Однако, возможно стоит задуматься о рациональности работы веб-сервера на lua? С одной стороны, действительно хорошо, не нужно устанавливать какой-нибудь там апач, php и тд, с другой стороны, стационарный веб сервер наверное всё же будет работать быстрее. Поэтому возникает сразу 3 мысли (которые в принципе все возможно реализовать со временем). Первая, - это данный веб-сервер на lua. Вторая, - это написание под хаб плагина веб сервера. Третья, - это установка обычного веб сервера (того же апача). При реализации всех этих вещей админ хаба сможет сам выбрать.

Но это так, на будущее big_smile.gif А пока думаю нужно ещё много сделать в этом направлении.

Setuper, сокеты вполне себе работают, спасибо за библиотеку под русхаб.
Для себя делал тест вот этого сервера, открывал в опере 20 закладок и ставил ежесекундное обновление, время работы самого скрипта не превышало и сотой доли секунды, а максимальное время ожидания клиента составляло сотые доли секунды, хотя обработка и стоит в 300 мсек. Я так думаю что апаче даже тяжелее big_smile.gif Хотя возможности сравнивать конечно бессмысленно. Единственное, до какого извращения я еще не дошел так это обработка конструкций вида
Код
<?lua if sData ?>какие-то данные<?lua else ?>еще что-то<?lua end ?>
но думаю и это сделаю big_smile.gif Я хочу добиться того чтобы юзер воткнул библиотеки если надо и включил скрипт с минимальными настройками, без установки дополнительных программ и извращения с ними. Прямое взаимодействие с хабом дает нам прекрасную и простую возможность напрямую им управлять.
Я очень бы хотел сервер, написанный не на скриптовом языке и обрабатывающий луа т.к. все-таки это самый быстрый скриптовый язык, а расширить возможности можно применяя апи... Если будет плагин, из него потом можно и отдельный веб-сервер сделать, то это будет прекрасно, еще одно великолепное творение big_smile.gif
Setuper
24.1.2010, 15:05 Клиент FGlink DC++ NEW
Впервые представлен пользователям
Хватит.

Delion, я уважаю твое мнение и я уверен что ты его можешь оспорить у любого человека, но если спор заходит слишком далеко, умнее тот кто остановится первым.
Omnis, мы тоже умеем веселиться, особенно в той области где хоть что-то знаем. А как известно, в споре рождается истина, ну или ничего не рождается big_smile.gif
Come_clarity, я бы не стал в такой форме общаться с людьми, как бы они не хамили тебе, даже в интернете, не стоило вступать в спор с самого начала, просто делай что делаешь, этот вариант подойдет для всех лучше всего.
Wariner
24.1.2010, 14:48 BanMe
API1, API2
Странно, у меня не падала, просто банила по умолчанию. Ограничение делается вот в этой строке:
Код
        if iBanTime and iBanTime > 0 then
чтобы ограничить какой-то цифрой, к примеру 100000 делаем так:
Код
        if iBanTime and iBanTime > 0 and iBanTime < 100000 then
если подберешь значение при котором птока не падает - пиши, а то в документации этого нет nothing_to_say.gif
X-Sky
24.1.2010, 13:53 BanMe
API1, API2
Илюх, юнный падаван, тебе на будущее, смотри на сколько нелогичная конструкция:
Код
    local sCmd = sData:match"%b<>%s+([!+-/*]%S+)"
    if sCmd == "!banme" then
тут ты делаешь в 1 строке разнообразные префиксы команд, однако из-за захвата вместе с префиксом ты ограничиваешь сам себя одним префиком во 2 строке, правильнее было бы так (спец символы кстати надо тоже экранировать):
Код
    local sCmd = sData:match"%b<>%s+[%!%+%-/%*](%S+)"
    if sCmd == "banme" then

А реализация вот такая, банится на минуты, сколько указано после команды, т.е. !banme 10000 забанит тебя же на 10000 минут, заменяем всю фукнцию ChatArrival:
Код
function ChatArrival(tUser,sData)
    local sData = sData:sub(1,-2)
    local sCmd, sBanTime = sData:match"%b<>%s+[%!%+%-/%*](%S+)%s*(%d*)"
    if sCmd == "banme" then
        SendDataToAll(("<%s> %s %s"):format(sBot, tUser[sNick], tMsg[math.random(1,#tMsg)]))
        SendDataToUser(tUser, ("<%s> Ты забанил сам себя))))"):format(sBot))
        local iBanTime = tonumber(sBanTime)
        if iBanTime and iBanTime > 0 then
            if not BanUser(tUser, iBanTime, sReason, tUser.sNick, bFull) then
                BanUser(tUser, math.random(tTime[1], tTime[2]), sReason, tUser.sNick, bFull)
            end
        else
            BanUser(tUser, math.random(tTime[1], tTime[2]), sReason, tUser.sNick, bFull)
        end
        return sReturn    
    end
end

Цитата(Unterlink(X-Sky) @ 24.1.2010, 13:36) *
И ставить 3 скрипта чтоли, ничё не пойму?

Нет, делаем как описано выше, меню надеюсь сами сделаете
Wariner, X-Sky
24.1.2010, 13:39 Rss. Отображение новинок движка Magneto при подключении юзера
Цитата(SAG @ 24.1.2010, 9:29) *
(Плохо когда не знаешь синтаксис и работу функций). Может кто знает где можно взять толковую книгу(обучалку) по луа на русском языке?

Пожалуйста. Луа не так уж и сложен, достаточно изучить 2 и 5 ветки докуменатции: Описание языка и Стандартные библиотеки, все на русском и вполне доходчиво big_smile.gif

Цитата(brauzer84 @ 24.1.2010, 13:24) *
Это проблемы кодировки на сайте? или в скрипте это как-то можно поправить?

Кодировка ленты значит утф, решение проблемы можешь найти, к примеру, здесь: RSS Ленты, читай внимательно...
brauzer84
23.1.2010, 23:37 Help
API2
Мало молитв... Да и тема оформлена хрен знает как... "Хелп", ну что это такое? Давай все по уму и правилам делать, тогда будет всем простота и радость. Для исправления надо было открыть ленту и увидеть что там немного иной порядок тегов нежли задано в скрипте, и всего-то поменять местами 2 тега в регулярном выражении, теперь все соответствует действительности big_smile.gif Учитесь, батенька... Больших вам успехов.
P.S.: советую посмотреть что исправлено, сравнив старый скрипт с этим и понять смысл всего что написано выше!
Артём
23.1.2010, 23:23 Клиент FGlink DC++ NEW
Впервые представлен пользователям
Опять устроили ожесточенную встречу мнений big_smile.gif ИМХО пусть оно существует, нам хуже от этого не будет, сфера развивается, действо есть, конкуренция даже кое-какая, жалко что наращивается какой-то стремный функционал вместо того чтобы заняться отладкой функций скачки и раздачи, что является основным...
Для многих клиенты уже составили свою картину, это как пепси и кока-кола, каждому свое, я вот привык к стрнгу и флаю и пока перебираться ни на что не буду, разве что если кто-нибудь из местных напишет свой клиент big_smile.gif
Come_clarity
23.1.2010, 23:15 Rss. Отображение новинок движка Magneto при подключении юзера
И даже нужно, делается элементарно, в нужном месте кода, можно перед выводом делаем вот такое действие
Код
sData = sData:gsub("|", "&#".."124;")
при условии что sData это наши выводимые данные. Разделение строки на которую заменяется сделано дабы форум не съел этот символ, т.е. можно убрать ".." из этой строки. Если не получится - выкладывай код скрипта, скажем что надо сделать
SAG
23.1.2010, 16:23 WebServer
скрипт создающий веб-интерфейс для хаба
WebServer
Версия: 0.2
Совместим с последними версиями хаба!

Скрипт создания веб-интерфейса для хаба. Для работы нужна библиотека сокетов, качать ее в теме luasocket для RusHub'а, и библиотека extend.dll (заимствовано из LuaAIO), она находится в прикрепленном архиве, все библиотеки кладем в папку libs.
Скрипт по умолчанию работает на 81 порту, и пароль и логин по умолчанию admin, меняется это все в начале самого скрипта.

Изменения в версии 0.2 по отношению к 0.1:
  • полностью переделана работа самого парсера скриптов, теперь возможны конструкции вида
    Код
    <?lua if sData ?>какие-то данные<?lua else ?>еще что-то<?lua end ?>
  • добавлена работа с некоторыми типами файлов (картинки, текст, html)
  • изменен интерфейс скрипта
  • идентификатор сессии убран в параметр куки из урл, теперь для работы необходимы включенные cookie!
  • кеш содержимого страницы, теперь если страница или подгружаемые в нее страницы не изменялись, уже скомпилированное содержимое берется из кеша


Выкладываю версию в таком виде для того чтобы оттестировали и посмотрели, а так же чтобы Jaska перевел под работу с веб-интерфейсом самого русхаба ввиду отсутствия времени у меня.

Мануал по работе страниц скрипта для разработчиков:

Код луа заключается в теги аналогично пхп:
Код
<?lua -- код ?>что-то там
В самом же парсере все подобные конструкции приводятся к виду
Код
-- код
print([=============[что-то там]=============])
Подобные скобки нужны чтобы исключить вложенные строки из оформления или еще чего-то, над этим моментом надо еще поработать big_smile.gif
Для перенаправления используется код вида
Код
<?lua
    MOVETO = (SERVER.tHeaders["Host"] or "").."/config/"
    return
?>

после определения переменной MOVETO все то что сгенерирует код скрипта не будет использовано и будет совершено перенаправление посредством отсылки нужных заголовков клиенту, чтобы не выполнять лиший код после определения страницы перенаправляения мы делаем возврат (return) из глобального окружения.

Для работы с сессиями определена таблица SESSION в которую можно заносить (и удалять) данные в любом виде, идентификатор сессии хранится в куки и срок сессии определяется в конфигурации скрипта параметрами
Код
iSessionTime = 60 * 60 * 10
iFirstSessionTime = 60 * 2
где iFirstSessionTime - время на существовании сессии если пользователь зашел в первый раз и не предпринимает никаких действий, а iSessionTime - время для сессии для 2х и более переходов пользователя по страницам сайта.

Так же скрипт получает таблицу SERVER, являющуюся таблицей клиента, обработанного до этого движком скрипта. Эта таблица имеет вид:
Код
SERVER = {
    ["iStartTime"] = 4,968,
    ["sUrl"] = "/config/",
    ["sGetData"] = "we=get&page=1234",
    ["sFile"] = "one.lua",
    ["tPostData"] = {
        ["one"] = "1",
    },
    ["tHeaders"] = {
        ["Accept-Charset"] = "iso-8859-1, utf-8, utf-16, *;q=0.1",
        ["TE"] = "deflate, gzip, chunked, identity, trailers",
        ["Accept-Encoding"] = "deflate, gzip, x-gzip, identity, *;q=0",
        ["Accept-Language"] = "ru-RU,ru;q=0.9,en;q=0.8",
        ["Host"] = "localhost:81",
        ["Connection"] = "Keep-Alive, TE",
        ["Accept"] = "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1",
        ["User-Agent"] = "Opera/9.80 (Windows NT 5.1; U; MRA 5.4 (build 02620); ru) Presto/2.2.15 Version/10.10",
        ["Cookie"] = "LUASESSID=93C975EDB2DB840152F7106892A7509C84EBFE8273D3CDF964D061A0E49BDB73; pid=431697804b79522a12991ac0677f2d2d; LUASESSID=93C975EDB2DB840152F7106892A7509C84EBFE8273D3CDF964D061A0E49BDB73",
        ["Referer"] = "http://localhost:81/config/",
        ["Cookie2"] = "$Version=1",
    },
    ["tCookie"] = {
        ["pid"] = "431697804b79522a12991ac0677f2d2d",
        ["LUASESSID"] = "93C975EDB2DB840152F7106892A7509C84EBFE8273D3CDF964D061A0E49BDB73",
    },
    ["sVersion"] = "HTTP/1.1",
    ["sLoadFileWay"] = "C:/Server/RusHub/scripts/www/config/index.lua",
    ["sPath"] = "/config/",
    ["Client"] = tcp{client}: 00BFC0F0,
    ["tGetData"] = {
        ["we"] = "get",
        ["page"] = "1234",
    },
    ["sMethod"] = "GET",
}

Для удобства таблицы SERVER.tGetData и SERVER.tPostData вынесены в отдельные таблицы (ссылкой) GET и POST соответственно.
Так же таблица Core доступна напрямую из окружения.

В сам скрипт глобальное окружение (таблицы table, math и прочие) передаются через ссылку в переменной _G (аналогично модулю).
Для опять же удобства работы со строками таблица string внесена в окружение выполняемого скрипта и работать со строками можно по-прежнему, к примеру:
Код
one = ("one two"):match"%S-"
остальные функции надо вызывать через _G, к прмеру так:
Код
sData = _G.table.concat(tOurData)


В глобальном окружении так же существуют функция print, осуществляющая добавление данных ко всему выводимому содержимому. Обычная функция луа по-прежнему доступна через _G.print

Плюсом парсер обрабатывает функцию loadtoscriptfile в которую передается путь к загружаемому коду или тексту в файл, обработка идет аналогично loadfile, однако хочу заметить что эта функция обрабатывается на уровне парсинга страницы при ее преобразовании в код луа и в самом окружении она не присутствет. Вот пример, путь мы даем относительно ТЕКУЩЕГО загруженного скрипта:
Код
loadtoscriptfile("../sources/Login.lua")


По любым вопросам и замечаниям работы парсера обращаться в тему скрипта! big_smile.gif


Скрипт создан на основе сделанного как-то давно мною скрипта Webhubconfig для PtokaX.

Старые версии, оставил на память, качать их не надо
[attachment=3962:WebServer_v0.1.rar]
BIMMER71, Jaska, Setuper, FallenAngel, Invisible, Otshelnik-Fm, PomanoB, Saymon21, KamoK, hipimps71, AltSide
23.1.2010, 15:51 Предложения для развития
Цитата(Setuper @ 6.1.2010, 23:45) *
Однако, для функции Core.SetConfig исключения составляют настройки: sHubIP, iMainPort, sSubPorts.
При изменении настройки sHubName или sTopic отправляется соответствующая команда. После изменения, настройки сохраняются.

Мне кажется значимый пункт для того чтобы добавить в документацию по функциям.
Setuper
22.1.2010, 20:04 Мафия
Нет уж, увольте, так и я могу, что я для начала и сделал прежде чем писать сюда, не очень хочется разбираться и вникать.
Вы расскажите как оно по-вашему должно работать в ВИДЕ СКРИПТА и на ХАБЕ...
+ вашими словами мнение об игре, ее суть и правила, дерзайте! ;)
А уж потом и поговорим о реализации.
Wariner, Тёмич
21.1.2010, 21:09 Мафия
Тогда расскажите как оно должно работать big_smile.gif
Тёмич
21.1.2010, 19:53 Спасибо, +1, согласен, спасибо, +1 .....
Надоедает
Цитата(King @ 21.1.2010, 12:39) *
Что за бред, зачем тему то создавать? По каждому пункту правил будешь открывать отдельные топики?

Одно из правил администрации что ее "действия не обсуждаются". Просят - будте добры, в редких случаях можно написать ответом в пост "спасибу" дабы поднять тему, но должна быть еще и смысловая нагрузка в дополнение. Я тоже вам советую использовать эту полезную кнопку, только не перебарщивайте feel_good.gif
X-Sky
20.1.2010, 20:39 От: BanLogger
От темы с ID: 2945
Понял тебя, при первой возможности реализую. Сейчас как скрипт? Работает? Осечек не выдает?
X-Sky
20.1.2010, 20:33 RSS лента
Так сложно залезть в скрипт и посмотреть что да как? Строки о памяти убираются тут
Код
        sMsg = tostring(cnt).." новых тем с: "..Feed.."\n\n"..
          reply..""..
        "\t\t\tОбработано за: "..time
заменяем на
Код
        sMsg = tostring(cnt).." новых тем с: "..Feed.."\n\n"..
          reply

А чтобы сделать разделители меняем
Код
    if next(New) then
        reply,cnt = "",0
        for key,val in ipairs(New) do
            local bool = true
            for i,v in ipairs(Old) do if v[2] == val[2] then bool = false break end end
            if bool then
                cnt = cnt + 1
                for i,v in ipairs(val) do reply = reply.."\t"..v.."\n" end
                reply = reply.."\n"
            end
        end
    end
на
Код
    if next(New) then
        reply,cnt = "\t============================================================\n",0
        for key,val in ipairs(New) do
            local bool = true
            for i,v in ipairs(Old) do if v[2] == val[2] then bool = false break end end
            if bool then
                cnt = cnt + 1
                for i,v in ipairs(val) do reply = reply.."\t"..v.."\n" end
                reply = reply.."\t============================================================\n"
            end
        end
    end

И скажите, много изменений? Это сложно?
Invisible, CraZy
20.1.2010, 8:51 Домены Для Вашего Хаба
Как думаете?
Цитата(OsSMaX @ 17.1.2010, 0:03) *
Если ещё актуально, сделайте пожалуйста:
r101.mydc.ru <= r101.no-ip.org

Цитата(kikopro @ 20.1.2010, 8:45) *
dc-popular.mydc.ru <=| 79.132.121.69

Готово, простите что может долго, предыдущий пост я просто просмотрел каким-то образом.
OsSMaX, kikopro
20.1.2010, 0:04 Ваши Вопросы И Предложения По Поводу Форума
Добавил, меняем тут, странно что при включенной опции отображения в доп. инфо в сообщениях этих полей не видно..
mariner, evg
17.1.2010, 22:56 Ваши Вопросы И Предложения По Поводу Форума
Я попробовал, а вы лучше выразите свое мнение по поводу цвета big_smile.gif
Wariner
17.1.2010, 18:36 Fuck2UnReg
API1, API2 | Скрипт ограничений для незарегистрированных юзеров
Название: Fuck2UnReg
Версия скрипта: 1.3
Версия API: скрипт универсальный
Первая версия от: 20 октября 2007 big_smile.gif

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

Код
-- что запрещаем при старте скрипта (1 - запрещено)
tConfig = {
    ["bMainChat"] = 1,    -- главный чат
    ["bPM"] = 1,        -- лички
    ["bDownload"] = 1,    -- скачку
}

-- диапазоны IP, на которых не применяются правила блокировки
tAllowedRanges = {
    ["127.0.0.1"]= "127.0.0.255",            -- localhost
}
Tsd, denis, F I L I N, Kingston, X-Sky, Sunshine-hub, Pro009, доктор ливси, shur49, GULAM33, мамин_парень, Yamakasi, Alexkote
17.1.2010, 18:05 HideMe 1.0b
API2
Цитата
$UserCommand 1 3 Меню\\Команда?$<%[mynick]> !cmd1&*#124;<%[mynick]> !cmd2&*#124;

* убрать! Попробуй так big_smile.gif
FallenAngel, X-Sky, мамин_парень
17.1.2010, 15:00 Новогодняя шапка форума
как вам?
Вот и прошло все новогоднее празденство, может пора вернуться шапке к рабочему варианту? Или еще до февраля пусть еще будет?
Wariner
16.1.2010, 20:37 NoSomeCmdsToUsualUsersBot v1.1
API1, API2 | Скрипт определенных команд &quot;не для всех&quot
Название: NoSomeCmdsToUsualUsersBot
Версия скрипта: 1.1
Версия API: скрипт универсальный
Первая версия от: 20 октября 2007 big_smile.gif

Цитата
Скрипт, дающий доступ к определенным командам только тем юзерам, чей ник вписан в таблицу в скрипте (к примеру рестарт скриптов или отсылка массмеседжа)
Если юзер пробует пользоваться командой он получает предупреждение, а ники что вписаны в таблицу в скрипте получают уведомление о команде юзера. Порой полезно когда вы не хотите плодить много профилей.

Код
-- Конфиг бота:

    -- Таблица с никами, которым будет разрешены команды:
    tAllowNicks = {
        ["Admin"] = 1,
        ["НИК"] = 1,
        ["Nickolya"] = 1,
    }

    -- Таблица с командами, которые могут использовать только юзеры с никами из таблицы tAllowNicks:
    tNotAllowCmds = {
        ["addreguser"] = 1,
        ["massmsg"] = 1,
        ["delreguser"] = 1,
        ["restart"] = 1,
        ["startscript"] = 1,
        ["stopscript"] = 1,
        ["restartscript"] = 1,
        ["restartscripts"] = 1,
        ["getscripts"] = 1,
        ["opmassmsg"] = 1,
    }

    -- Cooбщение для тех, кто пытается воспользоваться командой:
    NotAllowedMsg = "У вас нет прав для использования этой команды! Обратитесь к администратору хаба...;)"
Invisible, xRayNeo, rival, KRAVA, Saymon21, Dimon21, TiGRpp, Djessa, shur49, мамин_парень
16.1.2010, 17:11 Ваши Вопросы И Предложения По Поводу Форума
Сделал, пользуйтесь, все для вас big_smile.gif
А картинки лучше все-таки прикреплять к сообщениям...
Accelerator
14.1.2010, 13:39 Вопросы по RusHub
Технические вопросы
Внимательно читаем тему самого хаба и видим:
Цитата
sSubPorts - дополнительные порты хаба (нужно указывать через пробел).
iMainPort - основной прослушиваемый порт.
fixx, -=Alexandr=-
12.1.2010, 23:37 Скрипт онлайн-погоды
скрипт погоды сейчас
Разобрались, код из скрипта постом выше надо поправить чтобы была отсылка в чат. Заменяем
Код
    if bSendToChat then
        TmrMan.AddTimer(iTimeToSend*1000,"GetData")
    end
на
Код
    if bSendToChat then
        TmrMan.AddTimer(iTimeToSend*1000,"SendToChat")
    end

Еще нашел странный косяк, если у кого есть подобное - правьте:
Код
    Core.SendToAll(tUser,"*** Погода в Новосибирске: "..(sTemp or "[нет данных]"))
заменяем на
Код
    Core.SendToAll("*** Погода в Новосибирске: "..(sTemp or "[нет данных]"))


Цитата(Артём @ 2.1.2010, 8:49) *

Держи, прости что не так быстро как бы ты хотел, если еще сам не переделал big_smile.gif
+ добавил установку задержки для закачки страницы из интернета, чтобы хаб особо не подисал. Если этого нет в вашем скрипте в самом начале делаем настройку
Код
-- Таймаут ожидания загрузки страницы (чтобы хаб не подвисал), в секундах:
iTimeOut = 5
и после
Код
    http = require("socket.http")
дописываем
Код
    http.TIMEOUT = iTimeOut
Артём, Saymon21
12.1.2010, 23:23 Сохранение из таблицы в хтмл файл
Не знаю почему не помогут, накидал пару строк, если еще интересно и актуально - посмотрите.

Код
SaveToHtml()
это функция вызова сохранения в файл, в конце кода она только для проверки работоспособности
intlive
12.1.2010, 23:03 нужен скрипт для запрета входа с ограничением скорости
аналог RusBot на YnHub
Переписал под второй апи, пользуйся: NoLimit 1.2
НеуНейм
12.1.2010, 23:00 NoLimit 1.3
API1, API2 | Скрипт запрета определенных ограничений скорости отдачи
Версия скрипта: 1.3
Версия API: скрипт универсальный

Скрипт запрета определенных ограничений, проверяет тег юзера на ограничение и если оно меньше заданного - отключает юзера с сообщением в приват. Ограничения можно настроить для каждого профиля отдельно.

Код
    -- Минимальное нижнее ограничение на отдачу в кб для каждого профиля в локальном диапазоне:
    tProfileLimits = {
        [0] = 0,        -- Администратор
        [1] = 10,        -- Оператор
        [2] = 150,        -- VIP
        [3] = 50,    -- Зарегистрированный пользователь
        [-1] = 50,    -- Незарегистрированный пользователь
    }
    
    -- Таблица с локальными диапазонами:
    tLocalArea = {
        {"10.0.0.0", "10.255.255.255"},
        {"109.86.0.0", "109.87.255.255"},
        {"80.73.0.0", "80.73.255.255"},
        {"178.150.0.0", "178.151.255.255"},
    }
    
    -- Минимальное нижнее ограничение на отдачу в кб для каждого профиля во всех остальных диапазонах:
    tInetProfileLimits = {
        [0] = 0,        -- Администратор
        [1] = 10,        -- Оператор
        [2] = 150,        -- VIP
        [3] = 50,    -- Зарегистрированный пользователь
        [-1] = 50,    -- Незарегистрированный пользователь
    }


Изменения с версии 1.3: добавлены локальные диапазоны и отдельная таблица ограничений для всех остальных диапазонов, исправлены старые ошибки
Изменения с версии 1.2: добавлено апи 2 и обновлена функция корректировки тега

Старая версия
[attachment=3893:NoLimit_1.2.lua]
Артём, Kingston, Saymon21, мамин_парень, Yamakasi
10.1.2010, 23:10 RSS лента
Да, видимо поздно уже было, поправил ошибку в посту выше, прикладываю скрипт изменненный уже здесь.
Saymon21, CraZy
10.1.2010, 5:05 RSS лента
Добавляем в самое начало скрипта таблицу
Код
local FieldsRus = {
    ["title"] = "Заголовок", -- Заголовок
    ["description"] = "Описнание", -- Описнание
    ["link"] = "Ссылка", -- Ссылка
    ["author"] = "Автор", -- Автор
    ["category"] = "Категория новости", -- Категория новости
    ["comments"] = "Комментарии к новости", -- Комментарии к новости
    ["pubDate"] = "Публичная информацию", -- Публичная информацию
    ["guid"] = "Глобальный индиккатор новости", -- Глобальный индиккатор новости
}

и заменяем
Код
            if Fields[field:lower()] then
                field = field:lower():gsub("[<>]","")..":"
на
Код
            if field and Fields[field:lower()] then
                field = field:lower():gsub("[<>]","")
                field = (FieldsRus[field] and FieldsRus[field] or field)..":"
Invisible, dj hoodo
10.1.2010, 1:58 P2p Off 1.6
API1, API2 | Отключение файлообмена
Сделайте дополнительные проверки в функции чтобы она не сыпала ошибками. Для этого давайте попробуем заменить строки
Код
    local toWhoUser = Core.GetUser(toWho,true)
    local toWhoUser2 = Core.GetUser(toWho2,true)
на
Код
    local toWhoUser = Core.GetUser(toWho or "",true)
    local toWhoUser2 = Core.GetUser(toWho2 or "",true)
X-Sky
5.1.2010, 19:39 нужен скрипт для запрета входа с ограничением скорости
аналог RusBot на YnHub
При чем тут RusBot и YnHub не ясно, попробуй вот это или это
НеуНейм, мамин_парень
4.1.2010, 23:46 Репорты об ошибках старых версий
архив темы ошибок текущей версии хаба
Попробовал почистить основную тему, все ошибки старых версий сложил сюда, если что не так - выслушаю ваши правки.
Wariner
4.1.2010, 15:02 HideMe 1.0b
API2
Вот, переделал Жень, пробуйте.
Invisible, Saymon21, X-Sky, мамин_парень
2.1.2010, 4:39 Репорты об ошибках старых версий
архив темы ошибок текущей версии хаба
Отловленные баги при работе с луа:
- функция Core.SendToUID при том что она получает 3 аргумента, отправляет сообщение в чат без ника
- такое чувство что что-то отваливается когда происходит ошибка при загрузке скрипта, при этом функция перезагрузки скриптов не возвращает ошибку, приходится перезапускать хаб чтобы он перезапустил скрипты.
- креш при вызове Core.GetScript с параметром выключенного скрипта, из-за этого невозможно запустить выключенный скрипт (в смысле сделать проверку на включенность скрипта), лог в файле system1.log:

Раскрывающийся текст
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: rushub.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 4b3aabde
Имя модуля с ошибкой: lua51.dll
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 4b3aabf6
Код исключения: c0000005
Смещение исключения: 000056f8
Версия ОС: 6.1.7600.2.0.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789


Что хочется видеть в апи:
- совсем не ясный параметр iByte в функции Core.GetUser(UID/sNick, iByte), либо объяснений по этому параметру, либо нормальной функции
- изменение настроек хаба через луа, хотя бы имени хаба и топика
- совместить функции Core.SendToNick(sTo, sData, sNick, sFrom) и Core.SendToUID(UID, sData, sNick, sFrom)
- может будет удобней если будет парситься майинфо юзеров
- и конечно же расширения апи big_smile.gif

Хабыч, тут нет профилей, они реализуются скриптами, я написал пробную версию подобного скрипта с минимумом функций, лежит оно здесь: FirstRusHubBot
Setuper
2.1.2010, 4:33 FirstRusHubBot
приводим RusHub к рабочему виду функционалом скриптов
Итак, выкладываю скрипт дающий пока небольшой функционал для управления новоиспеченным RusHub'ом.

Что сделано:
  • Приветствие, меняется в отдельном файлике hello.txt, все возможные значения для замены в нем уже присутствуют
  • Регистрация - расширение того, что выложил Илья, теперь команда регистрации доступна только тем кто не зарегистрирован, команда смены пароля, просмотра своего пароля и удаления своей регистрации. По умолчанию удалять свою регистрацию могут только пользователи с профилем 3, менять пароль могут все зарегистрированные. У администраторов теперь есть команды просмотра паролей пользователей, смены профилей пользователей, удаления и добавления регистраций пользователей. Везде ведется контроль за уровнем профиля, т.е. оператор не может добавить к зарегистрированным администратора. Есть мысль регистрировать первого юзера с профилем 0
  • Маленькие команды помощи, просмотра своего айпи и отсылки сообщения от 3 лица.
  • Управление скриптами, двигать пока нет возможности, но все остальное доступно. Работа с логом ошибок так же будет позже.
  • Положено начало системе наказаний командой отключения от хаба, баны будут в следующей версии.

Получилась гибкая легко изменяемая система, команды лежат в файле cmds.lua, по шаблону легко добавляется что угодно. Так же возможные настройки: имя бота и хабтопик, можно задать какие профили будут иметь ключик, за это отвечает параметр bHaveKey таблицы tProfiles что находится в самом начале файла FirstRusHubBot.lua. Пока все, позже будет больше, тестируйте. Для того чтобы стать админом необходимо зарегистрироваться, залезть в файл RegUsers.dat, поменять там параметр ["iProfile"] на 0 рядом с нужным ником, затем перезагрузить скрипты.

Изменения в версии 0.2 по сравнению с предыдущей:
  1. Исправлена совместимость с текущей версией хаба
  2. Ввиду поправленого косяка с функцией скриптов теперь работает управление скриптами
  3. Мониторинг команд профиля, чтобы профиль ниже рангом не мог воздействовать на пользователя имеющего профиль выше
  4. Раширены команды управления регистрацией: пользователь теперь может смотреть свой айпи, администраторы могут смотреть пароли, изменять профиль (забыл про смену пароля юзеру, это записано в todo) и удалять регистрацию пользователей
  5. Команда отключения юзера от хаба


Вот возможности профилей по умолчанию в скрипте на текущую версию:
Администратор
<RusHubBot> *** Доступные вам команды:

*** Команды вашего профиля "администратор":

!mypass - напоминает пароль для входа на хаб. Альтернативы: !мойпароль
!changepass <новый пароль> - меняет пароль необходимый для входа на хаб. Альтернативы: !сменитьпароль
!seepass <ник> - позволяет посмотреть пароль пользователя. Альтернативы: !смотретьпароль
!addreguser <ник> <пароль> <профиль> - добавляет регистрацию ника с заданым паролем и профилем. Альтернативы: !добавитьюзера
!changereguser <ник> <профиль> - меняет профиль у указанного ника. Альтернативы: !поменятьюзера
!delreguser <ник> - удаляет регистрацию пользователя. Альтернативы: !удалитьюзера
!getscripts - показывает список всех скриптов. Альтернативы: !скрипты, !получитьскрипты
!restartscripts - перезапускает все скрипты. Альтернативы: !перезапускскриптов
!startscript <имя скрипта> - запускает указанный скрипт. Альтернативы: !запуститьскрипт
!restartscript <имя скрипта> - перезапускает указанный скрипт. Альтернативы: !перезапуститьскрипт
!stopscript <имя скрипта> - останавливает указанный скрипт. Альтернативы: !остановитьскрипт
!drop <ник> - отключает от хаба выбранного пользователя. Альтернативы: !отключить

*** Глобальные команды:

!help - вот эта справка по командам. Альтернативы: !помощь
!myip - покажет вам ваш ip-адрес. Альтернативы: !мойайпи, !мойип
!me <сообщение> - отправить в чат сообщение от 3 лица. Альтернативы: !ми, !я

Оператор
<RusHubBot> *** Доступные вам команды:

*** Команды вашего профиля "оператор":

!mypass - напоминает пароль для входа на хаб. Альтернативы: !мойпароль
!changepass <новый пароль> - меняет пароль необходимый для входа на хаб. Альтернативы: !сменитьпароль
!seepass <ник> - позволяет посмотреть пароль пользователя. Альтернативы: !смотретьпароль
!addreguser <ник> <пароль> <профиль> - добавляет регистрацию ника с заданым паролем и профилем. Альтернативы: !добавитьюзера
!changereguser <ник> <профиль> - меняет профиль у указанного ника. Альтернативы: !поменятьюзера
!delreguser <ник> - удаляет регистрацию пользователя. Альтернативы: !удалитьюзера
!getscripts - показывает список всех скриптов. Альтернативы: !скрипты, !получитьскрипты
!restartscript <имя скрипта> - перезапускает указанный скрипт.
!stopscript <имя скрипта> - останавливает указанный скрипт.
!drop <ник> - отключает от хаба выбранного пользователя. Альтернативы: !отключить

*** Глобальные команды:

!help - вот эта справка по командам. Альтернативы: !помощь
!myip - покажет вам ваш ip-адрес. Альтернативы: !мойайпи, !мойип
!me <сообщение> - отправить в чат сообщение от 3 лица. Альтернативы: !ми, !я

vip
<RusHubBot> *** Доступные вам команды:

*** Команды вашего профиля "VIP":

!mypass - напоминает пароль для входа на хаб. Альтернативы: !мойпароль
!changepass <новый пароль> - меняет пароль необходимый для входа на хаб. Альтернативы: !сменитьпароль
!drop <ник> - отключает от хаба выбранного пользователя. Альтернативы: !отключить

*** Глобальные команды:

!help - вот эта справка по командам. Альтернативы: !помощь
!myip - покажет вам ваш ip-адрес. Альтернативы: !мойайпи, !мойип
!me <сообщение> - отправить в чат сообщение от 3 лица. Альтернативы: !ми, !я

Пользователь
<RusHubBot> *** Доступные вам команды:

*** Команды вашего профиля "пользователь":

!unreg - удалить свою регистрацию на хабе. Альтернативы: !удалитьрегистрацию
!mypass - напоминает пароль для входа на хаб. Альтернативы: !мойпароль
!changepass <новый пароль> - меняет пароль необходимый для входа на хаб. Альтернативы: !сменитьпароль

*** Глобальные команды:

!help - вот эта справка по командам. Альтернативы: !помощь
!myip - покажет вам ваш ip-адрес. Альтернативы: !мойайпи, !мойип
!me <сообщение> - отправить в чат сообщение от 3 лица. Альтернативы: !ми, !я

Гость
<RusHubBot> *** Доступные вам команды:

*** Команды вашего профиля "гость":

!regme <пароль> - зарегистрироваться на хабе. Альтернативы: !регми, !зарегистрироваться

*** Глобальные команды:

!help - вот эта справка по командам. Альтернативы: !помощь
!myip - покажет вам ваш ip-адрес. Альтернативы: !мойайпи, !мойип
!me <сообщение> - отправить в чат сообщение от 3 лица. Альтернативы: !ми, !я
Setuper, FallenAngel, Invisible, MEXAHuK, ShadoWx, Maximum, Otshelnik-Fm, Accelerator, KT315, Drakula, Kingston, Sekretchik, CrazyKiller, Saymon21, Dimon21, Sorrow, mod, Darksome, Hellsing, AltSide, Panasonic, AfLc, kma21, КрутойПерец, werwolf.zw
1.1.2010, 14:33 Подарки от дед мороза
API2
Если это стока
Код
    sSentence = "*** Дарит "..user.sNick.." "..sSentence.." ***"
то по логике вещей надо заменить вот на это
Код
    sSentence = "*** Дарит "..sUserName1.." "..sSentence.." ***"
TiGRpp, Плюшевая_мишка
31.12.2009, 18:48 С Новым Годом!
см название темы
Хочу от лица начальства вас поздравить с наступающим НОВЫМ ГОДОМ, чтобы были настроения и сбывались мечты, всем много времени и терпения! Спасибо вам что вы есть, надеюсь этот форум стал чем-то больше чем просто каким-то сайтом в интернете для многих тут, и не зря это все делается, очень вам всем признателен, надеюсь в новом году мы будем немного добрее, много умнее и очень усердны, лень уйдет и будут делаться дела, так как хочется именно нам! С уважением, ваш N.
FallenAngel, Alexey
31.12.2009, 1:33 Скрипт онлайн-погоды
скрипт погоды сейчас
Это переделка моего скрипта, написал как сделать тут
Saymon21
31.12.2009, 1:32 Weather [ Api 1&2 ] [ By Nickolya ]
API2 | Расширенная погода с rp5.ru
Для вывода в чат по таймеру инфы типа
Цитата
<PtokaX> Расписание Погоды в Туле, Тульская область: В 00:00 было -6.5°C, облачность 10 баллов (без просв.), 729.6 мм рт ст, влажность 91%, ветер ЮЮЗ, 1 м/с, ливневой снег слабый

делаем следующее в файле Core.lua, находим:
Код
            local tData2 = {}    -- таблица с данными пустая
            for i = 1, table.maxn(S.tMadeData) do    -- проходим таблицу с готовыми данными
                if i <= iDaysToChat then    -- если нужный нам день, то добавляем в пустую таблицу с данными (кол-во дней - в конфиге)
                    table.insert(tData2, S.tMadeData[i])    -- добавление
                end
            end
            local sTitle2 = S.sMainTitle.." (на "..iDaysToChat.." дня)"    -- заголовок с указанием кол-ва дней для ясности
            local sMsg2 = CreateMsg(tData2, sTitle2, S.sArchiveData, 1)    -- функция создания сообщения из таблицы с данными, заголовка и архивных данных
            Core.SendToAll("<"..sBot.."> "..sMsg2)    -- высылаем в чат
и заменяем это все дело на
Код
            Core.SendToAll("<"..sBot.."> "..S.sMainTitle..": "..S.sArchiveData)
Saymon21
31.12.2009, 1:00 Скрипт онлайн-погоды
скрипт погоды сейчас
Вот скрипт что получился для Евгения, если хотите - переделывайте, если не можете - кидайте ссылку на страницу где находятся данные, если страница локальная - можно код этой страницы.
Скрипт скачивает страницу и находит на ней температуру, по команде выводит в чат и может выдавать в чат через определенный интервал времени погоду.
X-Sky, CrackWG
29.12.2009, 23:01 Репорты об ошибках старых версий
архив темы ошибок текущей версии хаба
СУПЕР! Итак, начнем тестирование... Запуск без луа прошел успешно, закинув библиотеку в папку получил вот такое после запуска:
Цитата
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: rushub.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 4b390a23
Имя модуля с ошибкой: ntdll.dll
Версия модуля с ошибкой: 6.1.7600.16385
Отметка времени модуля с ошибкой: 4a5bdadb
Код исключения: c0000005
Смещение исключения: 00052b79
Версия ОС: 6.1.7600.2.0.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789

Запуск от имени администратора и попытка выставить совместимость с ХРюшей тоже не помогла, ошибка та же, в чем косяк? Винда седьмая...
Попробовал посмотреть системный лог хаба, он окзался пустым, полез в настройки, нашел некоторые что не описаны в первом посту
Цитата
<Item Name="iMaxErrLevel">2</Item>
<Item Name="iMaxLevel">0</Item>

для любопытства выставил эти настройки в 10000, в лог написалось немного, вот содержимое:
Цитата
[Tue Dec 29 22:58:34 2009] (3) cPluginList: Open plugin dir: C:/RusHub/plugins/
[Tue Dec 29 22:58:34 2009] (3) cPluginList: Plugin file name: .
[Tue Dec 29 22:58:34 2009] (3) cPluginList: Plugin file name: ..
[Tue Dec 29 22:58:34 2009] (3) cPluginList: Plugin file name: lua51.dll
[Tue Dec 29 22:58:34 2009] (3) cPluginList: Attempt loading plugin: C:/RusHub/plugins/lua51.dll
[Tue Dec 29 22:58:34 2009] (4) tcHashMap: Added: 3645847146
Это сильно плохо? И работает ли все у вас?

Спасибо за проделанную работу, Илюх, думаю мир дц будет обожать тебя за твое творение!!! victory.gif
Setuper
26.12.2009, 13:27 Freshstuff3 5.0.1
API2 | Русская версия | Скрипт релизов и заказов
Папка config, файл main.lua, все просто, ставим тут ноль:
Цитата
-- Показывать последние Релизы при подключении? 1=PM, 2=mainchat, 0=no
ShowOnEntry = 1
denis
26.12.2009, 13:22 Guess Country ; Страны
API2
76 строка
Код
    local Path,Os,Gcf = Core.GetPtokaXPath().."scripts/",os.getenv("OS"):lower(),Gc.File
косяк скорее всего в моменте
Код
os.getenv("OS"):lower()
т.к. нет проверки на возвращаемое значение ОС, попробуй вот так сделать:
Код
    local Path,Os,Gcf = Core.GetPtokaXPath().."scripts/",(os.getenv("OS") or ""):lower(),Gc.File
TiGRpp
20.12.2009, 16:06 TimeToNewYear
API2 | Время до нового года
Исправления есть, просто скрипт перезаливался в один пост, вот ссылка: TimeToNewYear_littleFix.lua
Качаем его и тестируем на здоровье, править там ничего не надо.
FallenAngel
20.12.2009, 15:33 Guess Country ; Страны
API2
Чтобы полностью избавиться от бота удали эту строчку, в которой менял значение. Смена true на false отнимает только ключ у бота.
SAG
19.12.2009, 17:46 Новогодняя шапка форума
как вам?
Еще немного пофлудим... Недавно сделали новогоднюю шапку для форума, а точнее немного поизголялись над логотипом, хочется ваших мнений и одобрения + новогоднего настроения big_smile.gif
P.S.: Дед Мороз в трубе посередине и правда прячется, да, так задумано))
P.P.S.: пингвин - отдельный привет для линуксоидов...
Wariner, Invisible, X-Sky
19.12.2009, 17:39 Guess Country
Help
Первая строка выглядит так, разница конечно между s и S, но это значительно:
Код
    local _,_,pfx,cmd = data:lower():find("%b<> (["..Gc.Prefixes.."])(%S+)")
хотя именно в этой строке, если не менять команды скрипта, можно оставить и %a+
Артём
19.12.2009, 17:36 TimeToNewYear
API2 | Время до нового года
Узнаем, сделал пару фиксов, из них: меню теперь собирается при запуске 1 раз а не при каждом заходе, замена функций регистрации бота на отсылку протокольных команд, проверка таймера теперь ведется каждые 200 милисекунд, думаю это исправит все косяки с дубляжом, пробуйте!
FallenAngel, Serx
18.12.2009, 13:05 Подскажите как исправить косяк...
Все никак не доберусь удалить вообще эти режимы... Инструкция на картинке big_smile.gif
Артём
15.12.2009, 13:07 Say_script 1.03 - 1.031
API1 | Скрипт, позволяющий писать от любого имени
Цитата(FallenAngel @ 15.12.2009, 9:18) *
Только цвет фразы-ботовидного увета. ну это уже, как я понимаю,завсит от клиента.

Попробуйте дополнить скрипт отправкой еще и майинфо, перед
Код
Core.SendToAll("$OpList "..sWho)
припишите
Код
Core.SendToAll("$MyINFO $ALL "..sWho.." no<SomeDC++ V:(r21),M:A,H:1/0/1,S:10>$ $ $no@mail$255008881124$")

тут я не стал вписывать соединение юзера, там идет магический байт, который тут вряд ли отобразиться, если хотите - допишите сами, можно выдрать его из CMD-отладчика в дц, по аналогии с отправляемыми MyINFO.
FallenAngel
10.12.2009, 0:33 С Днюхой Тебя!
поздравления
Да, Сев, с Днем Варенья тебя, начинающий скриптодел, успехов и много удачи! big_smile.gif
Invisible
9.12.2009, 19:41 от:Как по команде сделать показ сообщения
консультация
Давай по-порядку:
1. Создаем файл hubs.txt с нужным нам содержимым в папке texts, которая лежит в той же папке что и exe'шник самого хаба.
2. В настройках хаба ты включаешь текстовые файлы. Скрипт тебе никакой не нужен чтобы выводить этот файлик!
3. Для надежности перегружаем текстовые файлы.
4. Пробуем команду !hubs на хабе, если она проскакивает в чат идем дальше.
5. Отключаем все скрипты и снова пробуем команду, если все хорошо - включаем по-одному скрипты и смотрим какой нам мешает, пишем об этом сюда.

Скорее всего это скрипт лонли или какая-нибудь другая заглушка, либо мультибот.

Цитата
а мини-меню в самом верху, над всеми скриптами..
вот это совсем не понял, давай без сленга и профессиональных словечек не из сферы дц, пробуем писать на литературном языке годов эдак 90х, тогда будет проще, заранее спасибо big_smile.gif
Uncle_Dif
9.12.2009, 11:04 TriviaMods - мод скрипта для командной игры
API2
Подправил, так пойдет?big_smile.gif
demondroid
5.12.2009, 21:35 Weather [ Api 1&2 ] [ By Nickolya ]
API2 | Расширенная погода с rp5.ru
По-идее если сделать
Код
tTimesToSendToChat = {}

tShowAtCurTime = {}
тогда инфа перестанет выводиться в чат, проверь еще раз что ты сохранил файл и все сделал именно так, еще можно для надежности удалить все временные файлы из папки скрипта, кроме Core, конечно.
Come_clarity
4.12.2009, 1:13 Freshstuff3 5.0.1
API2 | Русская версия | Скрипт релизов и заказов
первая строка лежит в самом конце файла ptokaxnew.lua, вторая - 340 строка в файле kernel.lua, третья - последняя строка в том же файле, по аналогии в папке components 2 скрипта, в их конце следующие 2 строки (модуль загружен), а последняя - 215 строка файла requester.lua в все той же папке components...
Wan
3.12.2009, 1:28 Домены Для Вашего Хаба
Как думаете?
Uncle_Dif, во-первых, прекрати под каждым своим сообщением приписывать извинения, это не по-мужицки big_smile.gif Во-вторых, в твоем случае твой локальный меняющийся айпи присоединяется к любому домену на no-ip.com, где ты можешь скачать программку и она будет автоматом привязывать твой динамический айпи к адресу, а уже этот адрес ты можешь прикрепить к любому раздающемуся здесь домену. Надеюсь понял, если нет - спрашивай.
BIMMER71, Uncle_Dif
24.11.2009, 10:17 SmilesLimiter
API2 | Бан за злоупотребление смайлами
По-идее такой ошибки быть не должно или же перед ней должна быть другая, все пути в скрипте, на сколько я вижу, правильные!

А... извиняюсь, сейчас все будет, скрипт выложен без его папки!

Папку в 1 пост положил, ее класть в папку scripts, сейчас ошибок быть не должно. Смайлы все в файле SmilesHere.txt

Вот кстати удаленное обсуждение: http://mydc.ru/topic2708.html
Invisible, steppnov, shur49
24.11.2009, 10:14 Хаблист
Или замени в скрипте <? на <?php ...
Saymon21
21.11.2009, 22:18 Sbot
мульти-скрипт
Нам бы код, так сказать "на растерзание", чисто поучиться, можно, пожалуйста, в каком бы виде он не был?!
MIKHAIL
13.11.2009, 16:02 Support
API2 | Комната техподдержки
Вместо
Код
SendToRoom(user.sNick,str)
делаем
Код
SendToRoom(user.sNick,str,user.iProfile)
затем
Код
function SendToRoom(name,msg)
заменяем на
Код
function SendToRoom(name,msg,iProfile)
    local oldname = name
    if tAllowProfilesKick[iProfile] then
        name = "Администрация"
    end
и... заменяем в этой функции везде
Код
if user.sNick ~= name then
на
Код
if user.sNick ~= oldname then

Пробуем что получится, отписываемся сюда.
Артём, мамин_парень
13.11.2009, 0:55 MagnetLog
API2 | Сохранение магнет ссылок
Цитата(wasd @ 7.11.2009, 14:20) *
возможноли сделать чтобы, если в сообщении несколько магнеток, все магнетки сохранялись а не только последняя?

Берем и вот этот код:
Код
    local sMagnet = sData:match".*(magnet:%S+%.%S%S%S).*"
    local bFlag = true
    if sMagnet then
        local sNick = sData:match"(%b<>)"
        for i,v in ipairs(tMagnet) do
            if v[1] == sMagnet then
                bFlag = nil
                break
            end
        end
        if bFlag then
            table.insert(tMagnet,{sMagnet, sNick, os.time()+iTime*3600})
        end    
    end

заменяем на вот этот немного доработанный код:
Код
    local sMagnet, bFlag
    for sMagnet in sData:gmatch"(magnet:%S+)" do
        bFlag = true
        if sMagnet then
            local sNick = sData:match"(%b<>)"
            for i,v in ipairs(tMagnet) do
                if v[1] == sMagnet then
                    bFlag = nil
                    break
                end
            end
            if bFlag then
                table.insert(tMagnet,{sMagnet, sNick, os.time()+iTime*3600})
            end    
        end
    end


Надеюсь моя помощь поддержит автора скрипта и он выполнит другую просьбу пользователя, да, Илюх? big_smile.gif
Accelerator, wasd
9.11.2009, 9:42 нужна помощь
По-моему тут надо искать проблему не в скриптах, а в головах людей... Но если так интересно, можно вписать фразу в этот скрипт, если сами не сделаете - пишите в ту тему, скажу куда и что. Или же есть вариант с простым скриптом, который, к примеру, отлавливает команду и отсылает сообщение:
Код
-- таблица с командами:
tCmds = {
    ["wds"] = true,
    ["nfspro"] = true,
    ["someanothercmd"] = true,
}

-- фраза для отправки:
sSendPhrase = "вам отправлено личное приватное сообщение, прочтите его!"

function OnStartup()
    sBot = SetMan.GetString(21)
end

function ChatArrival(tUser, sData)
    local sCmd = sData:match("^%b<>%s+%p(%S+).*|$")
    if sCmd then
        sCmd = sCmd:lower()
        if tCmds[sCmd] then
            Core.SendToUser(tUser, "<"..sBot.."> *** "..tUser.sNick..", "..sSendPhrase)
        end
    end
end
Invisible, Saymon21, X-Sky
8.11.2009, 14:21 Помогите перевести скрипт на API2
Переделал, для работы потребуется теперь библиотека PXLuaSocket-2.0.2, пробуйте, о всех проблемах можно писать тут big_smile.gif
Pro009
4.11.2009, 18:32 Скрипт проверки баланса
хелп
Код
<form method="post">

У тебя та же беда, нечто универсальное в этом скрипте будет не просто создать, ведь везеде свои премудрости. У ТС был довольно простой вариант, к тому же он предоставил все данные и поставил задачу, тут же пришло конкретное решение, все просто, это меня и порадовало big_smile.gif
Так что кому надо - отписываем адрес станицы с формой логинов и паролей и код того что получаем после входа, тогда и посмотрим что можно сделать...
RoL
2.11.2009, 13:56 Скрипт проверки баланса
хелп
Мой косяк, попробуйте вот этот вариант
RoL
28.10.2009, 14:34 Скрипт проверки баланса
хелп
Так, а замени конструкцию
Код
    local a, b = http.request{
        url = [[http://billing:8080/balance_sender?login=]]..login..[[&pswd=]]..pass..[[&mid=5]],
    }
на
Код
    local a, b = http.request([[http://billing:8080/balance_sender?login=]]..login..[[&pswd=]]..pass..[[&mid=5]])
RoL
27.10.2009, 15:49 Скрипт проверки баланса
хелп
Возможно и вполне легко реализуется, если пароль для проверки пароля отличается от того что для входа в интернет (так у нормальных провайдеров), то проблем никаких не будет big_smile.gif

Не сильно много времени у меня, но идея понравилась, - набросал скрипт, в самом конце введи свои данные ("тут_впиши_логин" и "тут_впиши_пароль") и напиши тут что тебе выдал хаб в ответ на запуск скрипта. Тогда посмотрим что можно сделать... Для работы требуется библиотека сокетов LuaSocket!

Код
local http = require("socket.http")

function GetData(login, pass)
    local a, b = http.request{
        url = [[http://billing:8080/balance_sender?login=]]..login..[[&pswd=]]..pass..[[&mid=5]],
    }
    if b and b == 200 then
        local c = a:match("status=\"(%S+)\"")
        if c then
            if c == "error" then
                return "Ошибка логина или пароля"
            elseif c == "ok" then
                local d = a:match("summa=\"(%S+)%s*\"")
                if d then
                    return "Ваш баланс равен "..d.." руб."
                else
                    return "Сумма не найдена"
                end
            else
                return "Ответ не корректен"
            end
        else
            return "Запрос не корректен"
        end
    else
        return "Запрос не обработан"
    end
end

Core.SendToAll("Ответ на запрос: "..GetData("тут_впиши_логин", "тут_впиши_пароль"))
RoL
26.10.2009, 16:19 Limit_Poisk
API2 | Скрипт ограничивает поиск и закачку по шаре
Во-первых лучше сразу просчитать размер ограниченной шары, дабы не производить это действие каждый раз (умножение), с сообщением и этим исправлением скрипт выглядит так:
Код
Limit=10*1073741824  -- в байтах (10 гб)

function ConnectToMeArrival(user)
    if Core.GetUserData(user,16)<Limit then
        Core.SendToUser(user, "*** Ваша шара меньше 10 гигабайт, поэтому вы не можете пользоваться файлообменом!")
        return true
    end
end
RevConnectToMeArrival=ConnectToMeArrival
Saymon21, Nenomernoj
13.10.2009, 11:19 Hub Menu
API2 | Меню для встроенных команд PtokaX
Если не ошибаюсь это вшито в некоторые клиенты, в стронге каких-то версий было именно такое отдельное меню, проверь на флайлинке, к примеру, там должно быть так как ты хочешь.
Gate001
29.9.2009, 14:07 Предложения для развития
Цитата(Otshelnik-Fm @ 28.9.2009, 22:56) *
В середине я немного урезал этот лог - т.к. форум больше 2 метров не дает загрузить (а он 2.04 был big_smile.gif - но это к Nikolya вопрос)

Поднял до 12, все для вашего удобства, пользуйтесь мои дорогие big_smile.gif
Otshelnik-Fm
28.9.2009, 13:25 Support
API2 | Комната техподдержки
Цитата(X-Sky @ 26.9.2009, 18:24) *
Коротко о том, что я бы хотел видеть в скрипте:
Чтобы администрация могла выкидывать (выгонять) юзеров с комнаты, чтобы не получалось таких случаев как с "Сашок".

Попробуй вот это, может я и не так понял...
Saymon21, X-Sky
27.9.2009, 20:22 Антиреклама
идея более сложного скрипта
в строках вида
Код
if string.find(msg ,tSafe[i] , 1, true) then

убираешь последние 2 параметра чтобы было примерно так:
Код
if string.find(msg ,tSafe[i]) then

попробуй...
Артём
27.9.2009, 18:11 Скрипт
перенаправления юзверей
А включить перенаправление при постоянном бане и забанить эти диапазоны не вариант?

Или как вариант по-быстрому переделал этот скрипт:
Код
-- Автор: Артём
local tRanks = {
  {"10.0.0.0", "10.255.255.255"},        -- Диапазон для перенаправления
  {"192.168.0.0", "192.168.255.255"}    -- Диапазон для перенаправления
}

sAddress = "адрес_для_перенаправления"
sReason = "причина для перенаправления"

function Ip2Num(sIP)
  local a, b, c, d = sIP:match"^(%d+)%.(%d+)%.(%d+)%.(%d+)$"
  return a * 16777216 + b * 65536 + c * 256 + d
end

function OnStartup()
  for k, v in ipairs(tRanks) do
    tRanks[k][1], tRanks[k][2] = Ip2Num(v[1]), Ip2Num(v[2])
  end
end

function UserConnected(tUser)
  local iIP = Ip2Num(tUser.sIP)
  for _, v in ipairs(tRanks) do
    if iIP > v[1] and iIP < v[2] then
        Core.Redirect(tUser, sAddress, sReason)
        return
    end
  end
end

RegConnected, OpConnected = UserConnected, UserConnected
-=Alexandr=-
27.9.2009, 17:36 Помогите перевести скрипт на API2
Скрипт использует библиотеку pxwsa_l51.dll котроая есть только для 1 апи птоки, для 2 весии апи эта библиотека не подходит и весь скрипт надо переписываыать, проще настроить уже существующий.
MIhan
26.9.2009, 14:02 Женюсь
И от меня много-много-всего-всего exciting.gif Главное - счастья со второй половинкой!!! Поздравляю от лица всего портала!!! beauty.gif beauty.gif beauty.gif И не сметь ругаться! Чуть что - пиши к нам, послушаем и поможем! big_smile.gif

А если 23+14-24=13:00 значит уже 2 часа как в счасливейшем браке big_smile.gif
Otshelnik-Fm
23.9.2009, 14:39 Мысли вслух-2
Так, конфликт прекратить, тут форум во-первых для тех кому интересна конкретная тематика, админы должны В ПЕРВУЮ ОЧЕРЕДЬ быть поддержкой любого пользователя. Обращаюсь ко всем кто является лицом форума, конечно больше к упомянутому тут тезке. Как думаю вы бы сказали сами - не интересно - не пишите или не читайте даже, а если хочется посраться с кем-нибудь и выясьнить кто прав, тогда давайте в личку. district, тебя же лично прошу не обращать внимания на тех кто по-твоему его не достоин, в итоге же в выигрыше остается тот кто сильнее и промолчит в ответ обидчику. Все ваши предложения и мысли выслушаю тут, желательно в культурном виде, многоуважаемые господа. big_smile.gif
district
21.9.2009, 10:40 Домены Для Вашего Хаба
Как думаете?
Цитата(X-Sky @ 20.9.2009, 20:54) *
Мне пожалуйста kreazone.mуdc.ru IP 84.22.158.163

Сделано, заказы все еще принимаются big_smile.gif
X-Sky
16.9.2009, 9:45 TEST
Цитата(emk HABICH 35 @ 15.9.2009, 18:28) *
а можно код на это?

можно
правда мне пришлось повозиться немного совсем чтобы довести все до ума, но все очень даже просто, читай обязательно ВНИМАТЕЛЬНО И ВДУМЧИВО тему с обсуждением мода.
Saymon21
15.9.2009, 9:10 TEST
Нет это не я)))) это я как-то давно стебался в кс и играл пару дней с таким ником, акк как видите старый, 88 (это не хай хитлер, это хип-хап)))) юзер big_smile.gif

Теги вроде сделал так чтобы автор темы МОГ ИХ УДАЛЯТЬ, теперь каждый автор немножко модератор big_smile.gif
Сейчас вам сделаю спойлер для текста и попробую сделать так чтобы автор темы тоже имел доступ к закреплению поста в теме, чтобы было как при линейном просмотре.
LaLa, Ksan
14.9.2009, 14:04 TEST
Не удаляйте плиз, это я извращаюсь!
LaLa
13.9.2009, 21:59 С праздником
Присоединюсь. Всех с праздником, всем удачи и правильного кода big_smile.gif
FallenAngel
9.9.2009, 12:28 SetMan.GetString
Часть тут: http://mydc.ru/topic118.html Думаю там и стоит это все продолжить...
Invisible, Drakula
7.9.2009, 10:39 Ваши Вопросы И Предложения По Поводу Форума
Цитата(Setuper @ 2.9.2009, 21:24) *
И ещё. Нажав на ссылку: "Активные сегодня", там заголовке написано: "10 авторов сегодня". Я уже об этом говорил раньше. Видимо при переносе форуме изменилось.

Это поправил.

Еще по просьбе Maximum'а сделал в форуме HexHUB два подфорума: Скрипты для HexHub'а, Плагиный для HexHub'а. Maximum, отпишись, можешь ты их модерировать или нет?!

Added: Мучаюсь с хромом, но он упорный, с**а. Может кто знает как решить проблему? Косяк только на странице портала. :(

Еще повесил адсенс назад, пользуйтесь, только аккуратно big_smile.gif
Setuper
20.8.2009, 15:05 Домены Для Вашего Хаба
Как думаете?
Сделал:
city24.mydc.ru <= 84.22.141.71
intlive
10.8.2009, 10:56 Несколько Слов О Захватах И Регулярных Выражениях
исключительно для разработчиков
Мерси, а методы len и sub естественно быстрее чем match или find ?!
Т.е. к примеру, берем строку "<Nick> lalalalala|", в ней нам нужен текст сообщения, ник нам известен, вот примерный код теста:
CODE
sData = "<Nick> lalalalala|"
sNick = "Nick"

iBegin = os.clock()
for i = 1, 1000000 do
--sNeedData = sData:match("^%b<>%s(.*)|$")
sNeedData = sData:sub(sNick:len() + 4, -2)
end

--Core.SendToAll((os.clock() - iBegin).." secs with _match_ and data: "..sNeedData)
Core.SendToAll((os.clock() - iBegin).." secs with sub and data: "..sNeedData)


А вот результат, сначала закоментированы 2е строки, 5 раз, потом первые:
Цитата
[11:52:22] 0.74899999999991 secs with _match_ and data: lalalalala
[11:52:23] 0.71699999999998 secs with _match_ and data: lalalalala
[11:52:25] 0.73300000000006 secs with _match_ and data: lalalalala
[11:52:25] 0.73299999999995 secs with _match_ and data: lalalalala
[11:52:26] 0.74900000000002 secs with _match_ and data: lalalalala
[11:52:41] 0.702 secs with sub and data: lalalalala
[11:52:42] 0.71799999999996 secs with sub and data: lalalalala
[11:52:44] 0.702 secs with sub and data: lalalalala
[11:52:44] 0.74900000000002 secs with sub and data: lalalalala
[11:52:44] 0.73299999999995 secs with sub and data: lalalalala

Как видите на милионе операций разница есть, незначительная, так что лучше использовать?
Invisible
10.8.2009, 9:06 Домены Для Вашего Хаба
Как думаете?
Сорри за задержку, кучусь как белка в колесе, сделал, прием заявок продолжается!
fullhub.mydc.ru <= 94.232.12.211
Тему подчистил big_smile.gif
himikell
29.7.2009, 9:02 Помогите избавится от ошибки
UserToBotDescription (API1)
Ищешь вот эту строку
Код
    local sNewMyINFO = "$MyINFO $ALL "..i.." "..tNeedUser.sDescription.."<"..v["sNeedClient"].." V:"..v["sNeedVersion"]..",M:"..tNeedUser.sMode..",H:"..v["sNeedHubs"]..",S:"..tNeedUser.iSlots..">$ $"..v["sNeedConnection"].."$"..sMail.."$"..tNeedUser.iShareSize.."$"
и в ней заменяешь
Код
M:"..tNeedUser.sMode..",H:
на
Код
M:"..(tNeedUser.sMode or "P")..",H:
Артём, мамин_парень
25.6.2009, 10:48 Банер хаба с онлайном юзеров и шары.
Это просто стучалка порта, она не определяет сколько где народа и шары, не так?
Если порыться в мануале по функциям пхп и найти разумную статью про создание изображений можно сделать такую штуку.

Сделаем, обещаю! Тогда давайте тут обсудим это, как вы видите этот юзербар, в каких вариантах вы его видите и так далее. Очень трудно самому все придумывать, а делать - нет, вот поэтому и прошу ВАШЕЙ помощи, идеи и мысли принимаются любые, выговаривайтесь, заодно и постов у вас прибавится. big_smile.gif
BIMMER71, FallenAngel
18.6.2009, 13:13 Домены Для Вашего Хаба
Как думаете?
Оформил: goldhub.mydc.ru <= 89.222.185.103
Electr0n1q
11.6.2009, 13:23 Алгоритм работы поиска в DC
Как работает поиск
По срабатыванию api функции поиска (SeachArrival) тут же высылать свои результаты, думаю только так. Не думаю что тебе это будет кто-то делать (я бы не стал, это во-первых искажение результатов поиска, во-вторых - никто не знает что ты туда хочешь, если рекламу, то она уже всех достала, и так где только можно), но на форуме есть как описание функций, так и описание протокола, плюс ты смотришь скрипты что работают с поиском, тут тоже такие есть! Так что сделать это даже новичку будет не трудно, правда времени на это понадобится побольше.

Немного подскажу: сортировка идет в большинстве клиентов по количеству совпадений, так что чем больше у тебя будет ответов, тем выше будет твой резульат.
bestnokia
10.6.2009, 9:36 Комната Смеха=)
Setuper, хе-хе, ссылку спалили на хабе, +1 big_smile.gif

Цитата
<System> Для регистрации нужно ответить на несколько вопросов!!! Если вы не согласны, то просто закроте это окно ;)
<System> Вопрос № 1: "Согласны ли вы не оскорблять пользователей хаба?"
<()Disconnect> Ога
<System> Положительные ответы предыдущего вопроса: да, согласен, согласна, yes
<System> Вопрос № 2: "Вы собираетесь тут флудить в чате?"
<()Disconnect> Нет
<System> Вопрос № 3: "Вы собираетесь спамить?"
<()Disconnect> Нет
<System> Вопрос № 4: "Рекламить ресурсы будите?"
<()Disconnect> Нет
<System> Вы были кикнуты по причине: Флуд однотипными PM!
*** Юзер ушёл [System - Poligon™] ***
Uncle_Dif
22.4.2009, 12:41 Информация По Nick&ip
Можно, все можно big_smile.gif Делается так: строку
Код
        sMsg = sMsg.."¦_ "..sSp..i.."\t"..tCurIPsData[1].."\t\t"..tLang.From..": "..sForm..sOnStartup.."\t"..tLang.To..": "..sTo..sOnExit..sRn
меняем на
Код
        sMsg = sMsg.."¦_ "..sSp..i.."\t"..tCurIPsData[1].."\t\t"..tLang.From..": "..sForm..sOnStartup.."\t"..tLang.To..": "..sTo..sOnExit.."\t - "..GetNormalTime(((tCurIPsData[4] ~= 0 and tCurIPsData[4]) or os.time()) - tCurIPsData[3])..sRn


и в самый конец добавляем вот эту хорошую функцию:
Код
function GetNormalTime(s)
    s=tonumber(s) or 0
    local r=""
    if s>=31104000 then r=math.floor(s/31104000).." г. " s=math.fmod(s,31104000) end
    if s>=2592000 then r=r..math.floor(s/2592000).." мес. " s=math.fmod(s,2592000) end
    if s>=86400 then r=r..math.floor(s/86400).." д. " s=math.fmod(s,86400) end
    if s>=3600 then r=r..math.floor(s/3600).." ч. " s=math.fmod(s,3600) end
    if s>=60 then r=r..math.floor(s/60).." мин. " s=math.fmod(s,60) end
    return r..s.." сек."
end


Получаем:
Цитата
¦ История сессий пользователя (лимит установлен в 30 записей):
¦_ 1 192.168.0.10 с: 12:13:02 22-04-09* до: 12:13:34 22-04-09 - 32 сек.
¦_ 2 192.168.0.10 с: 12:13:35 22-04-09 до: 12:14:40 22-04-09* - 1 мин. 5 сек.
¦_ 3 192.168.0.10 с: 12:14:41 22-04-09* до: 12:15:32 22-04-09* - 51 сек.
¦_ 4 192.168.0.10 с: 12:15:32 22-04-09* до: 12:16:04 22-04-09* - 32 сек.
¦_ 5 192.168.0.10 с: 12:16:04 22-04-09* до: 12:27:24 22-04-09* - 11 мин. 20 сек.
¦_ 6 192.168.0.10 с: 12:27:24 22-04-09* до: 12:28:44 22-04-09* - 1 мин. 20 сек.
¦_ 7 192.168.0.10 с: 12:28:45 22-04-09* до: 12:29:56 22-04-09* - 1 мин. 11 сек.
¦_ 8 192.168.0.10 с: 12:29:56 22-04-09* до: текущее время (на хабе) - 5 сек.
¦ * Включение или выключение скрипта


Для особо ленивых прилагаю файлик, из поста выше его удаляю. И напоминаю что таблицы надо удалить если вы пользовались старой версией, без записей всех ip для ника big_smile.gif
[attachment=2214:UserInfo...API_2___.lua]

Еще забыл спросить, в скрипте я храню данные в формате TEXT, а потом уже используя конструкцию в духе
Код
    local tNeedUserData = loadstring("return "..row.sData)()
получаю таблицу, получается как бы бд за место текстовых файлов с доп. возможностями выборки и сортировки, как вам такая реализация, в том же сравнении со скриптом Ильи (варинера) и в духе оптимизованности и рациональности?!
Saymon21, TiGRpp
25.2.2009, 9:53 Ошибка При Распаковке
Тема обсуждения (на английском): http://board.ptokax.ch/index.php?topic=7803.0

Ответ PPK:
Цитата
Error during decompression is possible in any client supporting ZPipe.. when for some reason client is not able to receive all data and PtokaX reach max size for his sendbuffer. In that case when "keep slow clients online" is enabled PtokaX delete some data from start of sendbuffer and zpiped data can be corrupted.

Мой примерный перевод, по-моему по-дилетантски, но смысл думаю понятен:
Цитата
Ошибка при распаковке возможна в любом клиенте, поддерживающем ZPipe.. когда по какой-либо причине клиент не имеет возможности получить все данные и Птока достигает максимального размера буфера отправки. По этой причине когда "поддерживать медленные клиенты" включено, Птока удаляет некоторые данные из начала буфера отправки и сжатые данные могут быть повреждены.

Как видите, дело в скорости соединения и в объеме изначально отправляемых данных. Так что думаю будет разумно не мешать птоке и отправлять все что надо со скриптов по таймеру, как в некоторых скриптах описания...
Была и у меня такая проблема, виной всему были новые версии флайлинка (тогда еще новые), помогла установка версии еще новее. big_smile.gif
Saymon21
5.2.2009, 13:04 Textfiles_manager_and_updater
API1, API2 | Обновление TXT файлов по интервалу
На скорую руку перевел под 2 апи:
CODE
sTextFilesPath = "texts" -- папка с текстовыми файлами
iTime = 60 -- время в секундах на обновление файлов
bPm = false -- отсылать сообщение в приват (true) или нет (false)

function OnStartup()
sBot = SetMan.GetString(21)--frmHub:GetHubBotName()
require("pxlfs")
tFiles = {}
sHubPath = Core.GetPtokaXPath()--frmHub:GetPtokaXLocation():g("/", "\\")
sFilesPath = sHubPath..sTextFilesPath
--SetTimer(1000 * iTime)
--StartTimer()
TmrMan.AddTimer(1000 * iTime, "LoadFiles")
LoadFiles()
end

function string.g(sData, s1, s2)
return sData:gsub(s1, Return(s2))
end

function Return(sData)
if type(sData) == "function" then
return sData
end
return function()
return sData
end
end

--[[
function OnTimer()
LoadFiles()
end
]]--

function ChatArrival(tUser, sData)
sData = sData:sub(1, -2)
local _,_, sCmd = sData:find("^%b<>%s+%p(%S+)")
if not sCmd then
return
end
local sText = tFiles[sCmd]
if sText then
if bPm then
--tUser:SendPM(sBot, sText.data)
Core.SendPmToUser(tUser, sBot, sText.data)
else
Core.SendToUser(tUser, "<"..sBot.."> "..sText.data)
--tUser:SendData(sBot, sText.data)
end
return true
end
end

function LoadFiles()
tFiles = attrdir(sFilesPath)
end

function attrdir(path)
local tData = {}
for file in lfs.dir(path) do
if file ~= "." and file ~= ".." then
local _,_, sFileName, sExt = file:find("(.+)(%.txt)$")
if sExt then
local f = path.."/"..file
local attr = lfs.attributes(f)
assert (type(attr) == "table")
if attr.mode ~= "directory" then
tData[sFileName] = {
modification = attr.modification,
data = OpenTextFile(f),
}
end
end
end
end
return tData
end

function OpenTextFile(sFileWay)
local sMessage = "[ can not open file ]"
local sFile = io.open(sFileWay, "r")
if sFile then
sMessage = sFile:read("*all")
sMessage = sMessage:g("\n", "\r\n")
sFile:close()
end
if sMessage then
sMessage = "[ no data in file ]"
end
return sMessage
end


Библиотеку надеюсь найдете big_smile.gif
ramzes
27.12.2008, 15:08 Webhubconfig
API2 | Скрипт конфигурации хаба через веб-интерфейс
Файл WebScriptsCore.lua, строки 94-99:
Код
        if RegMan.AddReg(sNick, sPass, iDefRegProfile) then
            sLoginErrors = "<b style=\"color:#FF6600\">Поздравляем с успешной регистрацией!</b><blockquote>Вы зарегистрировали ник <b>"..GsubForHtml(sNick).."</b> с паролем <b><input value=\""..sPass.."\" readonly=\"true\" /></b><br />Теперь для входа на хаб под вашим ником необходимо знать пароль<br />Вы можете вводить его каждый раз вручную, либо прописать пароль в настройках клиента<br />Для этого найдите в списке избранных хабов этот хаб, зайдите в его свойства и пропишите в строках Nick и Password ваши ник и пароль</blockquote>"
            tRegSessions[sIP] = os.time()
        else
            sLoginErrors = "<b style=\"color:#FF6600\">Неизвестная ошибка регистрации!</b>\r\n"
        end

Меняем на:
Код
        if RegMan.AddReg(sNick, sPass, iDefRegProfile) then
            sLoginErrors = "<b style=\"color:#FF6600\">Поздравляем с успешной регистрацией!</b><blockquote>Вы зарегистрировали ник <b>"..GsubForHtml(sNick).."</b> с паролем <b><input value=\""..sPass.."\" readonly=\"true\" /></b><br />Теперь для входа на хаб под вашим ником необходимо знать пароль<br />Вы можете вводить его каждый раз вручную, либо прописать пароль в настройках клиента<br />Для этого найдите в списке избранных хабов этот хаб, зайдите в его свойства и пропишите в строках Nick и Password ваши ник и пароль</blockquote>"
            tRegSessions[sIP] = os.time()
            Core.SendToAll("<"..SetMan.GetString(21).."> *** Привестсвуем нового зарегестрировавшегося пользователя "..sNick.." ***")
        else
            sLoginErrors = "<b style=\"color:#FF6600\">Неизвестная ошибка регистрации!</b>\r\n"
        end

Ищи отличия big_smile.gif Так же можно сделать отправку нику дополнительного сообщения с хаба и прочее...
Wildcdu
15.12.2008, 2:03 Webhubconfig
API2 | Скрипт конфигурации хаба через веб-интерфейс
Выкладываю скрипт, библиотеки и другие файлы найдете если что в ахиве выше. Про дизайн никто ничего не говорил, хотя я просил, так что получайте что получаете big_smile.gif
Теперь при переходе на адрес хаба автоматом перекидывает в папку /reg/, где и можно зарегистрироваться.
Настройки регистрации (в главном файле в самом начале):
Цитата
iDefRegProfile = 3 -- регистрируемый профиль по умолчанию
iMinPassLen = 6 -- минимальная длина пароля
iRegTimeToIpInterval = 60*60*12+1 -- интервал для возможности пользования интерфейсом, в секундах, указано 12 ч. 1 сек.

Если задать параметр nick в get запросе, то получите заполненное поле ник, к примеру: http://localhost:7070/reg/?nick=me, для корректности запроса надо использовать функцию библиотеки сокетов url.escape, вот пример из мануала:
Код
-- load url module
url = require("socket.url")

code = url.escape("/#?;")
-- code = "%2f%23%3f%3b"
применение в нашем случае:
Код
weneedpagewithnick = "http://localhost:7070/reg/?nick="..url.escape(sSomeNick)

Смотрите сами, все претензии - сюда, чувствуется мне будет их немало...
Конфигурация по-прежнему находится в каталоге /config/, больше ничего толком не сделано. shame.gif
Invisible, Saymon21
22.11.2008, 13:57 Webhubconfig
API2 | Скрипт конфигурации хаба через веб-интерфейс
Всё что угодно при Вашем финансировании... Наймем ученых, программеров, пару шаманов с бубном, и дадим им задание сделать всё что хотите. big_smile1.gif

Ты имел в виду отметание фтп и редактирование скриптов как в редакторе птоки? Или можно сделать просто управление папками и файлами через скрипт. Но это часы разработки, а у меня их нет, так что либо ждать, либо делать самим.
X-Sky
11.11.2008, 0:49 Домены Для Вашего Хаба
Как думаете?
Сделано...
jina-net.mydc.ru <= 193.93.13.15
mageal.mydc.ru <= 195.189.45.30

Буду, естественно, очень рад взаимной помощи...
Чебурашка
10.11.2008, 21:20 Домены Для Вашего Хаба
Как думаете?
Итак, приступимс к выполнению заявок:
Записи типа CNAME:
jina-net.mydc.ru <= jina-net.no-ip.org
hentai.mydc.ru <= hentai-family.redirectme.net
Записи типа A:
district.mydc.ru <= 80.64.95.38

dimetrius, надо указать либо ip к которому привязывать домен, либо другой домен big_smile.gif

Цитата
[21:05:06] *** Соединение с jina-net.mydc.ru...
[21:05:08] *** Соединён
[21:05:09] <Eras> Этот хаб работает под управлением PtokaX DC Hub 0.4.2.9 (Время работы: 0 дней, 22 часов, 33 минут / Юзеры: 145)
Ээээ, я упустил выход новых версий хаба??)))

Цитата(mariner @ 10.11.2008, 17:55) *
=) Вроде крутые парни, а домен за 350р в год се позволить не можете big_smile.gif))

Ну не знаю, это правда просто, но я так не думал пока не задался такой целью.
А домен сейчас можно купить чуть ли не за 100, но это же русский народ... bad_smile.gif
Чебурашка
10.11.2008, 11:44 Домены Для Вашего Хаба
Как думаете?
Суть вопроса такова: есть возможность раздавать домены вида любая-фигня.тут.как_вообще_хотите.mydc.ru.
Технически, dns позволяет разместить большое количество записей, но раздавать всем подряд домены я не собираюсь, только тем кто в этом нуждается. Если вы имеете хаб, имеет ли смысл для вас иметь домен не с no-ip, допустим, а с mydc? Единственную трудность, которую я тут вижу, что лично вы не будете иметь доступ к изменению записи, так что тем, у кого часто меняется айпи, этот вариант не подойдет (может и получится автоматизировать процесс смены ip, но по личным наблюениям меняется он не так быстро как в указанном выше сервисе, может я конечно что-то не так делаю, но это время в районе 4 часов)... В плюсах вижу некую уникальность, да и домен хорошо показывает направленность. Материальных выгод я не ищу, только некое увеличение популярности форума, плюс может где-то скромную ссылку на ресурс.

Теперь что вы думаете по этому поводу?
PS: извиняю за не очень четкое выражение мысли, бошка варит с трудом...
tolya, LOKI, dj_crazy_joker
8.11.2008, 21:52 Работа С Библиотекой Операционной Системы
Lua 5.1.x
Оригинальный мануал (на английском), и не только, находится тут.

Итак, вот функции, их описание и способы применения, всё исключительно из опыта ковыряния скриптов и этого мануала, функции никогда не применияемые мною или в которых я не вижу смысла не описываю:

os.clock()
Возвращает приблизительное время в секундах использования ЦПУ программой (с момента запуска exe'шника)

os.date([format [, time]])
Функция для получения даты в определенном формате. Имеет два опциональных параметра format и time. Если оба параметра отсутствуют, то функция аналогична os.date("%c"), "%с" = "%x %X", об этом далее.

Первый параметр format имеет тип string. Опционально можно указать "!" в самом начале строки, тогда время форматируется в соответствии с универсальным глобальным временем (по Гринвичу).

Если формат состоит из "*t", то возвращается таблица со следующими полями: year (4 знака), month (1–12), day (1–31), hour (0–23), min (0–59), sec (0–61), wday (день недели, Воскресенье - 1), yday (день года) и isdst (по-моему летнее ли время, имеет тип boolean).
Код
[22:22:01] os.date("*t") = {
    ["hour"] = 22,
    ["min"] = 22,
    ["wday"] = 7,
    ["day"] = 8,
    ["month"] = 11,
    ["year"] = 2008,
    ["sec"] = 1,
    ["yday"] = 313,
    ["isdst"] = false,
}
[22:22:57] os.date("!*t") = {
    ["hour"] = 19,
    ["min"] = 22,
    ["wday"] = 7,
    ["day"] = 8,
    ["month"] = 11,
    ["year"] = 2008,
    ["sec"] = 57,
    ["yday"] = 313,
    ["isdst"] = false,
}
Как видите, с восклицательнм знаком параметры hour различаются на 3.

Если формат отличен от "*t", то строка форматируется аналогично функции С strftime. Вот обрабатываемые форматы:
  • "%a" - Сокращенный день недели. Пример: Thu.
  • "%A" - День недели полностью. Пример: Thursday.
  • "%b" - Сокращенное название месяца. Пример: Sep.
  • "%B" - Полное название месяца. Пример: September.
  • "%d" - Двухзначный день месяца начанающийся с 0 если цифра одна. Пример: 09.
  • "%e" - День месяца. Пример: 9.
  • "%H" - Двухзначное число часов начанающиеся с 0 если цифра одна. Пример: 16.
  • "%I" - Двухзначное число часов в 12-часовом формате начанающиеся с 0 если цифра одна. Пример: 04.
  • "%j" - Трехзначное число дней с начала года начанающиеся с 0 если цифра одна. Пример: 040.
  • "%k" - Двухзначное число часов. Пример: 9.
  • "%l" - Двухзначное число часов в 12-часовом формате . Пример: 4.
  • "%m" - Двухзначный месяц года начанающиеся с 0 если цифра одна. Пример: 09.
  • "%M" - Двухзначное число минут начанающиеся с 0 если цифра одна. Пример: 02.
  • "%p" - AM или PM.
  • "%S" - Двухзначное число секунд начанающиеся с 0 если цифра одна. Пример: 04.
  • "%w" - Номер дня недели в пределе от 0 до 6, где 0 - Sunday. Пример: 0.
  • "%x" - Стандартный формат даты. Для большинства языков это то же, что и "%B %d, %Y". Пример: September 06, 2002.
  • "%X" - Стандартный формат времени. Для большинства языков это то же, что и "%I:%M %p". Пример: 04:31 PM.
  • "%y" - Двухзначный год начанающиеся с 0 если цифра одна. Пример: 01.
  • "%Y" - Четырехзнчный год. Пример: 2001.

Примечание: перевод докуметации без изменения, в реальности некоторые функции отличаются или вообще не работатют, вот примеры:
Цитата
os.date() = "11/08/08 23:33:15"
os.date("%A") = "Saturday"
os.date("%b") = "Nov"
os.date("%B") = "November"
os.date("%d") = "08"
os.date("%e") = "00"
os.date("%H") = "23"
os.date("%I") = "11"
os.date("%j") = "313"
os.date("%k") = "00"
os.date("%l") = "00"
os.date("%m") = "11"
os.date("%M") = "33"
os.date("%p") = "PM"
os.date("%S") = "15"
os.date("%w") = "6"
os.date("%x") = "11/08/08"
os.date("%X") = "23:33:15"
os.date("%y") = "08"
os.date("%Y") = "2008"
Как видите, не всё работает. И для доп. нагрузки на мозги код для получения такого списочка:
CODE
qwe = "\r\n"

tData = {
"",
"%A",
"%b",
"%B",
"%d",
"%e",
"%H",
"%I",
"%j",
"%k",
"%l",
"%m",
"%M",
"%p",
"%S",
"%w",
"%x",
"%X",
"%y",
"%Y",
}

for i = 1, #tData do
local s = "return os.date(\""..tData[i].."\")"
s = s:gsub("\"\"", "")
local q = assert(loadstring(s))()
q = (type(q) == "string") and string.format("%q", q) or tostring(q)
s = s:gsub("return ", "")
qwe = qwe..s.." = "..q.."\r\n"
end

Core.SendToAll(qwe)


Второй параметр, если он не указан, равен os.time(), т.е. текущему времени "эпохи", можно указать другое время, которое можно получить при помощи функции os.time(table), пример таблицы table выше.

os.difftime(t2, t1)
Возвращает количество секунд с времени t1 по время t2. В POSIX, Windows и некоторых других системах это значение равнозначно t2-t1.

os.execute([command])
Функция аналогична С функции system. Она передает команду на исполнение ОС. Возвращает статус-код, который зависит от ОС. Если команда отсутствует, тогда возвращается ненулевое значение если shell доступен, 0 в противном случае.

os.exit([code])
Вызывают функцию C exit, с опциональным кодом code,чтобы выйти из программы. По умолчанию значение code - код успешного выполнения.

os.getenv(varname)
Возвращает значение системной переменной или nil если переменная не определена.

os.remove(filename)
Удаляет файл или папку с названием filename. Папка должна быть пустой чтобы ее удалить. Если функция не может провести удаление, возвращается nil и сторка с ошибкой.

os.rename(oldname, newname)
Переименовывает файл или папку с названием oldname в newname. Если функция не может провести переименование, то возвращается nil и строку с ошибкой.

os.time([table])
Возвращает текущее время при вызове без аргументов, или время и дату, указанные в передаваемой таблице. Эта таблица должна иметь поля year, month, и day, и может иметь поля hour, min, sec, и isdst (описание этих полей см. в описании функции os.date).

Возвращаемое значание – это число, значение которого зависит от системы. В POSIX, Windows и некоторых других системах, это число соответствует количеству секунд, отсчитываемому от некоторого заданного момента времени ("эпоха"). В других системах, значение не специфицировано, и число, возвращаемое функцией time, может быть использовано только как аргумент функций date и difftime.
Setuper, FallenAngel, Invisible, Ksan, BeN, Saymon21
17.10.2008, 22:30 Бан По Днс
подскажите кто в курсах
Можем, я вот попробовал, пробуй что вышло.
Saymon21, MIKHAIL, CRH
12.10.2008, 21:28 HelloToNewUsers
API1, API2 | Приветствие новому юзеру
Название скрипта: HelloToNewUsers
Версия API: API 1 и 2
Автор: Nickolya
Описание скрипта: отправляет приветствия юзеру зашедшему первый раз!
Pro009
12.10.2008, 16:23 Пара Скриптов
Скрипты под ptoka 0.4.1.1
Просто этот скрипт делал персонально для 1 хаба, скрипту необходимо изменть настройки хаба, и тут уже видимо я накосячил, слегка переделав блок смены настроек чтобы выложить на форуме. На хабе настройки не менялись, т.к. надо было перезапускать хаб, это решилось парой фраз переписки... Попробуй заменить функцию ConfigPtokaX в скрипте на вот эту:

Код
function ConfigPtokaX()
    local bMustChange
    if SetMan.GetNumber(11) ~= 2 then
        SetMan.SetNumber(11, 2)
        bMustChange = true
    end
    if SetMan.GetBool(11) then
        SetMan.SetBool(11, false)
        bMustChange = true
    end
    if SetMan.GetBool(12) then
        SetMan.SetBool(12, false)
        bMustChange = true
    end
    if not SetMan.GetBool(13) then
        SetMan.SetBool(13, true)
        bMustChange = true
    end
    if not SetMan.GetBool(14) then
        SetMan.SetBool(14, true)
        bMustChange = true
    end
    if not SetMan.GetBool(15) then
        SetMan.SetBool(15, true)
        bMustChange = true
    end
    if not SetMan.GetBool(16) then
        SetMan.SetBool(16, true)
        bMustChange = true
    end
    if bMustChange then
        SetMan.Save()
        Core.Restart()
    end
end

Или вот как всё должно выглядеть:
DriverZX-10
11.10.2008, 0:52 Бан По Днс
подскажите кто в курсах
Самой птокой - никак, можно использовать доп. библиотеки для скрипта, но там есть 1 проблема: если за ip нет записи на DNS-сервере, то библиотека виснет на некоторое время, от 1 до 20 секунд. А имя хоста определяется каждый раз при заходе юзера (надо чтобы знать забанен он или нет) и когда ты пытаешься забанить пользователя, так что хаб начнет жутко тормозить и превратится в один сполшной лаг. Чтобы ты попробовал, даже нашел у себя скрипт бана по днс, который я еще давно-давно пытался сделать, апи 1, работает с библиотекой PXLuaSocket.
andromed
9.10.2008, 23:47 Пара Скриптов
Скрипты под ptoka 0.4.1.1
Информер поправленный мной приложил. И вот экспериментальная версия описания сетей. Обычную найдешь тут.
Pro009, мамин_парень
4.10.2008, 17:24 Weather [ Api 1&2 ] [ By Nickolya ]
API2 | Расширенная погода с rp5.ru
Нашел вот в закромах у себя скрипт погоды, был даже сделан под оба апи, на сколько я помню, не выкладывал.
Для работы требуется библиотека сокетов! Вот тут ее можно взять.
Для работы с вашим городом идем на rp5.ru и ищем там свой код города, вставляем его в ссылку в настройках в главном файле скрипта. Код открыт, так что ковыряйте сколько влезет big_smile.gif
Вот результат работы (полный просмотр):

Цитата
<PtokaX> Погода в Туле. Расписание Погоды:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
В 13:00 было +18.8°C, облачность 7-8 баллов, влажность 60%, ветер ЮЮЗ, 3 м/с
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[ сб, 4 о. ]
\_ На 22:00: +13°C, без осадков, малооблачно (облачность 19%), влажность 76%, ветер Южный, 4 м/с, давление 745 мм рт. ст.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[ воскресенье, 5 октября ]
\_ На 04:00: +10°C, без осадков, переменная облачность (35%), влажность 80%, ветер Южный, 4 м/с, давление 745 мм рт. ст.
\_ На 10:00: +11°C, осадки (0.2 мм / 6 час), пасмурная погода (облачность 100%), влажность 82%, ветер Юго-Восточный,
4 м/с, давление 744 мм рт. ст.
\_ На 16:00: +15°C, преимущественно без осадков (0.1 мм / 6 час), пасмурная погода (облачность 100%),
влажность 74%, ветер Юго-Восточный, 4 м/с, давление 744 мм рт. ст.
\_ На 22:00: +12°C, без осадков, пасмурная погода (облачность 97%), влажность 81%, ветер Юго-Восточный,
2 м/с, давление 744 мм рт. ст.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[ понедельник, 6 октября ]
\_ На 04:00: +11°C, без осадков, значительная облачность (81%), влажность 82%, ветер Южный, 3 м/с, давление 744 мм рт. ст.
\_ На 10:00: +11°C, преимущественно без осадков (0.1 мм / 6 час), пасмурная погода (облачность 100%),
влажность 90%, ветер Восточный, 5 м/с, давление 744 мм рт. ст.
\_ На 16:00: +16°C, преимущественно без осадков (0.1 мм / 6 час), пасмурная погода (облачность 100%),
влажность 73%, ветер Юго-Восточный, 4 м/с, давление 743 мм рт. ст.
\_ На 22:00: +13°C, осадки (0.2 мм / 6 час), пасмурная погода (облачность 97%), влажность 90%, ветер Юго-Восточный,
2 м/с, давление 743 мм рт. ст.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[ вторник, 7 октября ]
\_ На 04:00: +13°C, осадки (3 мм / 12 час), пасмурная погода (облачность 100%), влажность 93%, ветер Юго-Восточный,
2 м/с, давление 743 мм рт. ст.
\_ На 16:00: +17°C, преимущественно без осадков (0.2 мм / 12 час), пасмурная погода (облачность 100%),
влажность 81%, ветер Юго-Восточный, 4 м/с, давление 744 мм рт. ст.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[ среда, 8 октября ]
\_ На 04:00: +11°C, без осадков, малооблачно (облачность 18%), влажность 90%, ветер Юго-Западный, 2 м/с,
давление 744 мм рт. ст.
\_ На 16:00: +17°C, преимущественно без осадков (0.3 мм / 12 час), облачно (облачность 77%), влажность 62%,
ветер Южный, 2 м/с, давление 744 мм рт. ст.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[ четверг, 9 октября ]
\_ На 04:00: +11°C, пасмурная погода (облачность 100%), влажность 93%, ветер Северный, 3 м/с, давление 745 мм рт. ст.
\_ На 16:00: +13°C, пасмурная погода (облачность 100%), ветер Северо-Восточный, 4 м/с, давление 748 мм рт. ст.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[ пт, 10 о. ]
\_ На 04:00: +10°C, пасмурная погода (облачность 100%), ветер Восточный, 3 м/с, давление 750 мм рт. ст.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Данные предоставлены rp5.ru - по лицензии Мет.Офиса Великобритании (Met Office) http://rp5.ru/town.php?id=8306
[ Этот скрипт и не только можно найти на портале для администратора хаба: http://mydc.ru/ ]
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Invisible, Ksan, ZION, Артём, 7up, Anarhiya, Kingston, Sekretchik, Saymon21, TiGRpp, girs, Тёмич, Litе, shur49, Kar@bas, zeusby
19.9.2008, 21:59 Webhubconfig
API2 | Скрипт конфигурации хаба через веб-интерфейс
Появился наконец интернет, так что я теперь снова с вами, но хватит о грустном. super_man.gif big_smile.gif
Я конечно ленив, но кое-что все-таки делаю на досуге, так что вот вам очередная версия для тестов, там не до конца сделана страничка с ошибками скриптов, да и не доделаны 3 страницы настроек различного антифлуда, но пока потестите это. В архиве все нужные библиотеки, теперь нужна еще и LFS, файлы скрипта, файлы языков, распаковываем в папку хаба, включаем в скриптах и тестируем. Обо всей фигне пишем сюда. confident.gif
Alexey, dj_crazy_joker
3.9.2008, 12:12 Антикапс
API1, API2 | Без наворотов, зато работает
Пжалуста secret_smile.gif big_smile.gif
Нашел вот один баг в новой функции: при наличии подряд не максимального ряда символов, а потом их повторе без разделения другими символами, второй и следующие ряды урезаются, к примеру "! раз! два!! три!!!" будет урезано в "! раз! два! три". Исправленную версию качаем из этого поста.
1.9.2008, 11:01 Антикапс
API1, API2 | Без наворотов, зато работает
Может это подойдет? Скрипт подделал под универсальный, будет работать на любой птоке с луа 5.1. Работает в фоновом режиме, никаких сообщений или предупреждений не оставляет, настройка простая - со скольки символов сообщения реагировать и процент капса, при котором сработает скрипт.
Pro009
26.8.2008, 18:31 RSS Ленты
API2 | Скрипт для просмотра новостных лент
Вот функция перевода из утф в коир, пришлось как-то сворганить, причем из функции которая переделывала коир в утф big_smile.gif, из-за неумения создания библиотек, изобретаем велосипеды... Вот код:

Код
s208 = string.char(208)
s209 = string.char(209)

function utf8towinru(text)
    text = text:gsub(s208.."(.)", function(sch)
        if (string.byte(sch)>=144 and string.byte(sch)<=191) then
            return string.char(string.byte(sch)+48)
        end
        if (string.byte(sch)==129) then
            return "Ё"
        end
        return s208..sch
       end)
    text = text:gsub(s209.."(.)", function(sch)
        if (string.byte(sch)>=128 and string.byte(sch)<=143) then
            return string.char(string.byte(sch)+112)
        end
        if (string.byte(sch)==145) then
            return "ё"
        end
        return s209..sch
    end)
    return text
end
xRayNeo
17.8.2008, 9:10 Webhubconfig
API2 | Скрипт конфигурации хаба через веб-интерфейс
Начал вот доделывать скрипты, думаю можно показать, заодно потестите. Скрипт работает подобно апачу, намного упрощенней конечно, но все же. Это лишь наработки, надеюсь конечная версия будет намного лучше оформлена. big_smile.gif
По умолчанию в скрипте прописан порт 7070, так что после запуска заходите на http://IP_хаба:7070/, там вводим ник и пароль, проверяется всё из базы хаба, так что вводим админские данные (таблица с профилями которым доступен скрипт в наличии), дальше думаю разберетесь. Сделано пока только пара страниц, но сейчас меня на продолжение уже не хватает, буду по мере возможности доделывать. Для работы понадобится библиотека PXLuaSocket (распаковать в папку libs в папке хаба), найти ее можно на форуме. Скрипт для версии 0.4.1.0 и на 0.4.1.1 думаю тоже пойдет. Пробуйте, обо всех корявостях пишем сюда.
Invisible, Alexey, TiGRpp, striker, CyberGhost404
29.7.2008, 22:11 Chatguard_v1.2
Удобный скрипт. ))
Переконвертировал. Конвертор очень хороший - мои руки))) Так что всё должно работать. Скрипт был довольно коряво написан, так что немного его переписал, тестите.
DrakonSP, САМАЭЛЬ
24.6.2008, 17:20 Faq По Dc
Задавайте свои вопросы!
Поправил. Спасибо! big_smile.gif
мамин_парень
22.6.2008, 22:23 Changestatus+seepass&profile
API1, API2 | Меняем профиль + смотрим профиль или пароль юзера
ChangeStatus+SeePass&Profile, скрипт для быстрой смены админом хаба профиля пользователя, просмотра его профиля или пароля.
Всё делается через удобное меню, профили уже вбиты в него, и никаких заморочек!
Как всегда, для обоих версий апи.

Цитата
<PtokaX> *** Nickolya, ты успешно сменил профиль юзера "Nickolya2" с Owner (0) на VIP (4)!
<PtokaX> *** Nickolya, пользователь "Nickolya2" имеет профиль VIP (4)
<PtokaX> *** Nickolya, пользователь "Nickolya2" имеет такой пароль: "1"
Invisible, Kingston, CERBER, Pro009, shur49
22.6.2008, 17:29 Network Separation
API1, API2 | Скрипт разделения сетей пользователей
Вот он, новый релиз скрипта разделения сетей пользователей. Выкладываю, как и всегда, для 1 и 2 API.

Функционал скрипта (версия 1.3):
  • Разделение сетей пользователей
  • Возможность указать в одной сети несколько диапазонов (если они прерываются)
  • Для каждой сети можно указать описание
  • Каждую сеть можно ограничить по размеру шары или по количеству пользователей
  • Профили, на которые не действуют ограничения
  • Сообщение о том, что сети разделены при попытке скачать с пользователя из другой сети (опционально)
  • Выключения разделения сетей для пользователя
  • Выключение или включение сообщения о разделении
  • Статус сети пользователя при заходе на хаб (опционально)
  • Просмотр своего статуса по команде
  • Просмотр списка пользователей, отключивших разделение сетей
  • Просмотр полной информации о каждой сети
  • Полноценное меню

Выкладываю версию 1.3b и 1.3.1. В первой исправлена 1 ошибочка в реализации, во второй по умолчанию разделение сетей у пользователя выключено!
Invisible, Ksan, Kingston, whuru, Milena, Dialog, -Andersen-, TiGRpp, balbes, van21, RAND(i)M, мамин_парень
21.6.2008, 17:03 Userinfo [ By Nickolya ] [ Sqlite Db ] [ Lua5.1 ] [ Api 1 ]
API1 | Скрипт оффлайн информации по юзерам
Нде, как я не старался, ничего не вышло.
Давайте разрулим вместе эту библиотеку, это ооочень полезная вещь, и я хочу ее использовать в своих проектах!
Обсуждаем все тут: Дополнительные Библиотеки: Sqlite
Milena
16.6.2008, 14:12 Гороскоп
API1, API2 | Гороскоп от Hyrax.ru на вашем хабе
Вот, свял... Скрипт берет rss-ленты с Hyrax.ru и делает из них гороскопы для хаба. :P

Цитата
Функционал скрипта:
• Общая характеристика дня из Ежедневного гороскопа
• Показ общей характеристики по определенным минутам часа
• Автообновение данных (опционально), проводится 1 раз в день, после 1 часа ночи
• Гороскопы сгруппированы для каждого знака зодиака и доступны по команде
• По команде доступен просмотр всего тематического гороскопа
• Просмотр полного гороскопа для всех знаков зодиака
• Админские команды просмотра статуса скрипта и ручного обновления данных
• Полноценная менюшка

Как всегда, выкладываю скрипт для 1 и 2 api хаба.

Изменения в версии 1.1:
• Добавлена таблица для настроек времени вывода (теперь можно четко задавать время суток, в которое будет отсылаться сообщение в чат)
• Добавлены опции обновления: время таймаута, время между попытками при неудавшемся обновлении и час дня, после которого происходит обновление.
• Усовершенствована система обновления, теперь скрипт сверяет время обновлений данных с сервера и данных, хранящихся в базе скрипта, при отсутствии различий во времени, скрипт выдает ошибку и прекращает обновление.

Библиотека для работы скрипта лежит тут, без нее работать ничего не будет! big_smile.gif
Invisible, Saymon21, Pro009, Тёмич, доктор ливси, Litе, Kar@bas
16.6.2008, 14:03 Luasocket
win32 | Работа с сокетами
Бибилиотека для работы с данными из интернета.

Для работы помещаем файлы из архива в папку libs, которую надо создать в папке хаба (где лежит PtokaX.exe)

Версия 2.0.2 для второго API, для первого - 2.0.1 !!
FBR, Tsd, Invisible, Ksan, district, Tarantul13, Sekretchik, Saymon21, Men, Sunshine-hub, Setup, Shurchik, shur49, stone, Osimus, AfLc, dj_crazy_joker, Yamakasi, Unique
10.6.2008, 18:09 Бутылочка
API1, API2
Цитата
Функционал скрипта:


Игра в бутылочку на хабе, бот выдает сначала фразы из таблицы w, затем - случайное действие из таблицы s.
Возможность случайной игры в бутылочку без участия пользователей. Включается и выключается из меню.
[nick1] - ник того, кто крутит бутылочку, или слчуайный ник при случайной игре
[nick2] - случайный ник из всех, находящихся на хабе

Что умеет скрипт (добавлено мною):


- ники не совпадают (только переделал слегка систему)
- нельзя играть одному на хабе
- профили, которые могут начинать и заканчивать случайную игру в бутылочку
- профили, которые могут играть в бутылочку
- вывод сообщений, пердшествующих действию бутылочки
- пока бутылочка крутится, никто не может ее запустить

Что примерно получается:

[00:00:03] < Бутылочка > *** Бутылочка крутится, крутится...
[00:00:04] < Бутылочка > *** Крутится, вертится...
[00:00:05] < Бутылочка > *** Останавливается...
[00:00:06] < Бутылочка > *** И указывает на MaRy...
[00:00:07] < Бутылочка > *** Nickolya от радости прыгает на MaRy и страстно целует в губы ***


Выкладываю версии для 1 и 2 апи хаба. Пользуйтесь на здоровье! ;) big_smile.gif
Invisible, denis, Drakula, Санёк, Inkvizitor_ks
29.5.2008, 12:27 Userinfo [ By Nickolya ] [ Sqlite Db ] [ Lua5.1 ] [ Api 1 ]
API1 | Скрипт оффлайн информации по юзерам
UserInfo [ by Nickolya ] [ SQLite db ] [ lua5.1 ] [ API 1 ]

Скрипт оффлайн информации о пользователях вашего хаба. Позволяет узнать данные пользователя, когда он уже покинул хаб.
Скрипт использует лишь 1 базу данных, думаю это уберет всю нагрузку на хаб, память будет использоваться как обычным скрипом!
Суть скрипта и оформление заимствовано из скрипта UserInfoF12 от Foreteller12.

База включает в себя:

  • Архив данных пользователя:
Цитата
------------------------------------------------------------------------------------------------------------------------------------------------------
¦ Информация о пользователе: Nickolya ( пользователь на хабе )
------------------------------------------------------------------------------------------------------------------------------------------------------
¦ Общая информация:
¦ Имя в базе данных: nickolya
¦ Юзер: Nickolya
¦ IP: 10.3.10.3
¦ Тег: <++ V:0.699,M:A,H:4/6/7,S:7>
¦ Описание: ?!!
¦ Email: @
¦ Клиент: DC++
¦ Версия клиента: 0.699
¦ Активный режим: Нет
¦ Оператор: Нет
¦ Шара: 296,31 ГБ (318155250438 Б)
¦ Профиль: Администратор (0)
¦ Хабы: 17
¦ Слоты: 7
------------------------------------------------------------------------------------------------------------------------------------------------------
¦ История сессий IP (лимит установлен в 30 записей):
¦_ 1 10.3.10.3 с: 13:22:13 29-05-08 до: текущее время (на хабе)
¦ * Включение или выключение скрипта
------------------------------------------------------------------------------------------------------------------------------------------------------


  • Информацию о никах, использованных конкретным ip-адресом:
Цитата
------------------------------------------------------------------------------------------------------------------------------------------------------
¦ Информация о никах IP-адреса 10.3.10.3 пользователя Nickolya (nickolya):
------------------------------------------------------------------------------------------------------------------------------------------------------
¦_ AУA™: использовался 2 раз, последний - 13:21:44 29-05-08
¦_ Nickolya: использовался 1 раз, последний - 13:22:13 29-05-08
------------------------------------------------------------------------------------------------------------------------------------------------------


Для работы вам потребуется вот эта библиотека, ее надо разместить в папке хаба (где лежит PtokaX.exe)

Пока только для 1 апи, под второй видимо были изменения в библиотеке, и теперь приходится решать кое-какие проблемы. Пробуем и отписываем как всё это работает...
Ksan, Milena, WINS, мамин_парень
19.5.2008, 21:29 Открытие Форума
Мы открылись! U are welcome :)
Вот и состоялось открытие форума, пока абсолютно девственного, но думаю общими усилиями мы это исправим!?!
Все замечания и пожелания оставляем тут, опрос я думаю будет в тему, так что отвечаем, аргументы так же тут. Приятного общения!
Saymon21

15 страниц V  « < 7 8 9 10 11 > » 
RSS Сейчас: 27.11.2024, 4:56