myDC.ru

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

 
История благодарностей участнику Nickolya. Спасибо сказали: 776
Дата поста: В теме: За сообщение: Спасибо сказали:
3.10.2010, 17:48 ChatHistorySQL
История чата
Код
date ("H:i:s Y-m-d", $row['time'])
intlive
1.10.2010, 12:17 Доработанный Tag Script
API1 | Добавляет имя профиля в Описание юзера
Анатолий, вы видимо туго воспринимаете информацию... Чтобы "нормально" отображало всё надо забить свои диапазоны в скрипт, они не имеют свойств настраиваться самостоятельно. И если надо поменять то, что в квадратных скобках, это делается проще некуда, блокнотом... А выражаться надо понятнее, если что-то не работает или не так, как вам надо - пишите все детально и во всех мелочах, тогда разобраться всегда будет просто. Подскажу еще один скрипт, называется Description_Network, ищите на форуме.
OLGA
30.9.2010, 10:16 Доработанный Tag Script
API1 | Добавляет имя профиля в Описание юзера
OLGA, достаточно настроить правильно хаб! На странице настроек "Моя информация" ставишь в нужных местах галочки и отправляешь информацию всем.
P.S.: пишите как пятнадцатилетний школьник-задрот....
мамин_парень
24.9.2010, 17:29 От: Stoptrep
От темы с ID: 1337
В идеале - вправить мозги админу...
А так, надо в начало скрипта добавить таблицу с профилями, которые не будут лимитироваться скриптом:
Код
tAllow = {
    [0] = true,
    [1] = true,
}
И после
Код
function ChatArrival(tUser)
добавить
Код
    if tAllow[tUser.iProfile] then
        return
    end
Invisible
21.9.2010, 17:29 Чат Комнаты
API2 | Возможно создать несколько чат комнат
VOVKT, то, что юзер отправляет кому-то в приват, он всегда видит в неизменном виде, в отличие от общего чата, так что отправлять ему его же текст не имеет смысла. И все команды и прочее, что идет в привате всегда будут видны "как есть". Что касается захвата, то в функции tSys:DoCmd идущие за командой даты ловятся как
Код
sA
VNoName
21.9.2010, 13:40 Weather [ Api 1&2 ] [ By Nickolya ]
API2 | Расширенная погода с rp5.ru
Из изменений на сайте - замена
Код
id=forecast
на
Код
class=forecast
и полный переход на utf-8... Исправленная версия для 2 апи в первом посту.
Ksan
21.9.2010, 12:00 string.gsub
string.gsub замена > < аналогом < >
Итак, для начала, я думаю, тебе надо прочитать Несколько Слов О Захватах И Регулярных Выражениях. Затем могу предложить такой костыль, который я как-то сделал для скрипта SmilesLimiter:
Код
tMagic = {
    ["%^"] = "%%%^",
    ["%["] = "%%%[",
    ["%)"] = "%%%)",
    ["%("] = "%%%(",
    ["%+"] = "%%%+",
    ["%*"] = "%%%*",
    ["%$"] = "%%%$",
    ["%?"] = "%%%?",
    ["%."] = "%%%.",
    ["%-"] = "%%%-",
}

function MakeNormMagicCharacters(sData)
    local sData = string.gsub(sData, "%%", "%%%%")
    for sFrom, sTo in pairs(tMagic) do
        sData = string.gsub(sData, sFrom, sTo)
    end
    return sData
end

Применение в твоем случчае:
Код
gsub( MakeNormMagicCharacters("8-\\"), "<img src='dckolobok/blush2.bmp.png'>"):gsub( MakeNormMagicCharacters("%-\\"), "<img src='dckolobok/wacko.bmp.png'>"):gsub( MakeNormMagicCharacters("$-\\"), "<img src='dckolobok/beee.bmp.png'>"):gsub( MakeNormMagicCharacters("{:-\\"), "<img src='dckolobok/unsure.bmp.png'>")


Для справки: в луа символ \ является служебным и для его нормального использования надо писать \\
Двойная кавычка экранируется как \"

Либо еще можно использовать метод отсюда, он оптимальнее.

Но лучше изучить просто какие символы экранируются и записывать вообще вот так:
Код
gsub( "8%-\\", "<img src='dckolobok/blush2.bmp.png'>"):gsub( "%%%-\\", "<img src='dckolobok/wacko.bmp.png'>"):gsub( "%$%-\\", "<img src='dckolobok/beee.bmp.png'>"):gsub( "{:%-\\", "<img src='dckolobok/unsure.bmp.png'>")
Invisible, Saymon21, foXDEvil
21.9.2010, 10:50 Домены Для Вашего Хаба
Как думаете?
Цитата
dc-urbania A 178.165.114.206
Готово!
@_JuNiOr_@
20.9.2010, 14:05 ShortUrls
API2 | Скрипт сокращения ссылок в чате
Обновил версию по запросу реквестера, вся информация в первом посту.
DEN 007, sania
17.9.2010, 22:46 HiLo 1.0c
API2 | Угадай число
Все конечно очень хорошо, но это не так тяжело сделать и самому, берем такую функцию (она немного извращена мной)
Код
function SerializeToString(tTable, sTableName, sTab)
    local tTableConcat = {}
    local sTab = sTab or ""
    table.insert(tTableConcat, sTab)
    table.insert(tTableConcat, sTableName and sTableName.." = {\r\n" or "return {\r\n")
    for key, value in pairs(tTable) do
        local sKey = (type(key) == "string") and ("[%q]"):format(key) or ("[%d]"):format(key)
        if(type(value) == "table") then
            table.insert(tTableConcat, SerializeToString(value, sKey, sTab.."\t"))
        else
            local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value)
            table.insert(tTableConcat, sTab)
            table.insert(tTableConcat, "\t")
            table.insert(tTableConcat, sKey)
            table.insert(tTableConcat, " = ")
            table.insert(tTableConcat, sValue)
        end
        table.insert(tTableConcat, ",\r\n")
    end
    table.insert(tTableConcat, sTab)
    table.insert(tTableConcat, "}")
    return table.concat(tTableConcat)
end


И делаем, к примеру, вот так
Код
Core.SendToNick('Invisible', SerializeToString(Core.GetOnlineNonOps(), "Core.GetOnlineNonOps()"))
и смотрим что выходит, так со всем, что нам надо... Лично я учился так.
Invisible
15.9.2010, 9:15 Чат Комнаты
API2 | Возможно создать несколько чат комнат
Код
function UserDisconnected(tUser)
    for sRoom, t in pairs(tRooms) do
        local sNick = tUser.sNick
        if tRooms[sRoom]["tMembers"][sNick] then
            tRooms[sRoom]["tMembers"][sNick]=nil
            tSys:Save(tRooms,"tRooms",tSys.sScriptsPath..tSys.hFile)
            tSys:SendToUser(sNick,tRooms[sRoom].sMsgExit,sRoom,sRoom)
            if tSys.bShowEnterExit then tSys:SendToMembers(sNick,sRoom,"*** Вышел: "..sNick,sRoom) end
        end
    end
end


Чтобы не было лишнего пробела замени
Код
    local _,_,sArg1,sArg2,sArg3=string.find(sData,"%$To:%s+(%S+)%s+From:%s+(%S+)%s+%$%b<>(.*)")
на
Код
    local _,_,sArg1,sArg2,sArg3=string.find(sData,"%$To:%s+(%S+)%s+From:%s+(%S+)%s+%$%b<>%s(.*)")
VNoName
14.9.2010, 12:34 Чат Комнаты
API2 | Возможно создать несколько чат комнат
Код
                -- return true    -- было вот здесь
            end
            return true    -- стало здесь, и так надо сделать по всей функции tSys:DoCmd(sNick,sArg,sRoom)
        elseif self:String2Lower(sCmd)==self:String2Lower(self.sCmdExit) then
VNoName
13.9.2010, 15:52 RegmeEmail
API2 | Регистрация через e-mail
Код
    Core.SendToOps(([[<%s> Зарегистрировался новый юзер, вот детали регистрации:

    Ник: %s
    Пароль: %s
    Шара: %s
    IP: %s
    Режим работы: %s
    Открыто слотов: %s
    
]]):format(sBot, tUser.sNick, sPasswd, GetNormalShare(Core.GetUserValue(tUser, 16) or 0), tUser.sIP, Core.GetUserValue(tUser, 10) and "Актив" or "Пассив", Core.GetUserValue(tUser, 21) or 0))


Функция GetNormalShare, ее надо дописать в самый конец скрипта:
Код
function GetNormalShare(s)
  s = tonumber(s) or 0
  if s >= 1125899906842624 then return (math.floor(1000 * s / 1125899906842624) / 1000).." ПБ"
  elseif s >= 1099511627776 then return (math.floor(1000 * s / 1099511627776) / 1000).." TБ"
  elseif s >= 1073741824 then return (math.floor(1000 * s / 1073741824) / 1000).." ГБ"
  elseif s >= 1048576 then return (math.floor(1000 * s / 1048576) / 1000).." МБ"
  elseif s >= 1024 then return (math.floor(1000 * s / 1024) / 1000).." КБ"
  else return s.." Б" end
end


Писал без проверки, так что за код не ручаюсь.
-=Zion=-
13.9.2010, 13:45 Викторина
API2
Ошибка значит что во всем скрипте где-то в функцию отправки пользователю не переданы данные...
Предлагаю вот такой фикс, заменяем
Код
function TrivEx:SendToUser(curUser,data)
    if (self._datamode == "main") then
        Core.SendToNick(curUser.sNick,"<"..TrivEx._Sets.bot.."> "..data)
    else
        Core.SendPmToNick(curUser.sNick,TrivEx._Sets.bot,data)
    end
end
на
Код
function TrivEx:SendToUser(curUser,data)
    if data then
        if (self._datamode == "main") then
            Core.SendToNick(curUser.sNick,"<"..TrivEx._Sets.bot.."> "..data)
        else
            Core.SendPmToNick(curUser.sNick,TrivEx._Sets.bot,data)
        end
    end
end
OLGA
13.9.2010, 13:19 RegmeEmail
API2 | Регистрация через e-mail
Точно, спасибо всем за фиксы big_smile.gif
-=Zion=-
12.9.2010, 20:07 Чат Комнаты
API2 | Возможно создать несколько чат комнат
Попробуй вот так:
Код
        elseif self:String2Lower(sCmd)==self:String2Lower(self.sCmdUsers) then
            sRoom=self:CheckRoom(sA,sNick,sRoom)
            if not sRoom then
                return true
            end
            if tRooms[sRoom]["tMembers"][sNick] then
                local i, sMembers = 0, {}
                for sNick in pairs(tRooms[sRoom]["tMembers"]) do
                    i = i + 1
                    table.insert(sMembers, sNick)
                end
                sMembers = table.concat(sMembers, ', ')
                tSys:SendToUser(sNick,"В комнате "..i.." пользователей: "..sMembers,sRoom,sRoom)
                return true
            end
VNoName
9.9.2010, 9:14 Twitter
Просмотр статуса пользователя
Строка
Код
local sBot
только объявляет переменную локальной, бот задается тут:
Код
sBot = SetMan.GetString(21)
т.е. надо заменять эту строку на
Код
sBot = "Twitter"


Чтобы бот не дублировал сообщения в чате заменяем
Код
    if sStatus ~= nil then
        Core.SendToAll("<"..sBot.."> *** Twitter "..sOutName.." ***\r\n"..sStatus)
    end
на
Код
    if sStatus ~= nil then
        if not sMemStatus or sMemStatus ~= sStatus then
            Core.SendToAll("<"..sBot.."> *** Twitter "..sOutName.." ***\r\n"..sStatus)
            sMemStatus = sStatus
        end
    end
PomanoB, DEN 007
7.9.2010, 17:04 как сделать юзербары со статистикой?
Поставить Lua-GD и попробовать переделать под верли скрипт юзербаров. Хотя думаю вариант со сбором информации в бд и генерации юзербаров средствами того же пхп тоже возможен, как это сделано в WebStats.
Invisible
6.9.2010, 23:36 Core.GetUserValue
Цитата
0.4.1.x \ scripting.docs \ scripting-interface.html \ index.html
Используй эту страницу и всё поймешь big_smile.gif

Специально для тебя:
Код
User data IDs for Core.GetUserData call.
0    - sMode
1    - sMyInfoString
2    - sDescription
3    - sTag
4    - sConnection
5    - sEmail
6    - sClient
7    - sClientVersion
8    - sVersion
9    - bConnected
10    - bActive
11    - bOperator
12    - bUserCommand
13    - bQuickList
14    - bSuspiciousTag
15    - iProfile
16    - iShareSize
17    - iHubs
18    - iNormalHubs
19    - iRegHubs
20    - iOpHubs
21    - iSlots
22    - iLlimit
23    - iDefloodWarns
24    - iMagicByte
25    - iLoginTime
26    - sCountryCode
Invisible
6.9.2010, 23:19 Запросы на скрипты
Он говорит что глобальной функции extractCmd не существует, по коду так оно и есть, так что либо тебе надо ее найти, либо самому отпарсить данные и извлечь из них команду и данные за ней.
KT315
4.9.2010, 20:45 Домены Для Вашего Хаба
Как думаете?
Такой айпи был закреплен за доменом раньше, на обновление днс надо время, порой оно занимает дни, так что ждите и реже меняйте айпи, лучше никогда... Для достоверности:
Цитата
uz-torrents A 89.236.254.187


И еще, обращение ко всем, кто получил домен! При обнаружении спама (или другой антиморальной деятельности) на других хабах с наших поддоменов - сначала будет предупреждение в этой теме, потом удаление домена.
Saymon21
4.9.2010, 18:23 Скрипт Действий
API1, API2 | Сообщения от 3его лица в чат
Естественно разница большая, лучше соединять меню вообще при старте скрипта, очищать память и юзеру отправлять уже готовую строку, в ней, если надо, можно сделать шаблоны для замены через gsub, тогда это максимально оптимизирует скрипт. Если вы собираете строку по маленьким кусам - это плохо, многоразовый вызов одной функции - тоже не ахти. Да и лучше использовать
Код
Core.SendToUser(tUser
вместо
Код
Core.SendToNick(tUser.sNick
Это тоже некого рода оптимизация скрипта.

Т.е. лучший для вас вариант такой
Код
-- при старте
sMenu = "$UserCommand 1 2 бла-бла-бла #124;|"..
"$UserCommand 1 2 бла-бла-бла #124;|"..
"$UserCommand 1 2 бла-бла-бла #124;"

-- при заходе клиента
Core.SendToUser(tUser, sMenu)
А еще лучше сделать отправку меню по запросу или через некоторое время после захода пользователя, это дает некую разгрузку и клиенту юзера и хабу.
Saymon21, RAND(i)M
4.9.2010, 1:44 PtokaX 0.4.1.2
ДЦ клиент
Да уж... Delia, спасибо за разъяснения! xXx-Portal, медвежьи услуги и левая информация на этом форуме воспринимаются оочень плохо, так что думай что делаешь, говоришь, пишешь и так далее, пожалуйста. Еще замечу подобные выходки на форуме и он будет только для чтения.
Aleksions
4.9.2010, 1:39 Время Стран.(Городов)
Каждые 6 или 3 часов выводило время в чат несколько стран например.
Ksan, так делать нельзя... Решение дано в скрипте. Если интересно - взгляни код, выкладываемый мной. Что будет неясно - спрашивай на хабе big_smile.gif
Итак, скрипт, мною как-то сделанный немного перековеркали, не в лучшую сторону, я вам скажу. Немного его переписал. Теперь таблица с временными поясами выглядит так:
Код
     -- Часовые пояса, 1 параметр здесь служит приставкой для времени и даты, первый параметр - смещение относительно текущего времени:
    tTimeZones = {
        --{0, "MSK"},
        {4, "NRSK_"},
    }

Таблицу вывода надо переписать вот так:
Код
    tFormat = {
        [1] = {
            ["iInteval"] = 10,
            ["sWhatBeforeInfo"] = "[",
            ["tPhrases"] = {
                "---==СЕРЕБРО==--- DChub]",
                "Хозяин хаба: Otmorozov]",
                "Оператор хаба: Алексашка]",
                "Московское время: HOURS:MINUTES]",
                "WEEK DAY MONTH YEAR г.]",
                "Норильское время: NRSK_HOURS:NRSK_MINUTES]",
                "NRSK_WEEK NRSK_DAY NRSK_MONTH NRSK_YEAR г.]",
                "Юзеров на хабе: USERS]",
                "Общая шара хаба: SHARE]",
            },
        },
    }

Как видите, для городов, где смещен часовой пояс, мы добавляем приставку к заменяемому параметру из таблицы tTimeZones.

Сам скрипт с исправлениями прикрепляю: [attachment=4985:Informer_.lua]

P.S.: OLGA, на форуме можно прикладывать файлы к сообщениям, делайте это, обменники тут в моде, как и код на всю страницу. И вы случайно не сам мисьё Otmorozov? big_smile1.gif
OLGA
2.9.2010, 18:57 Thunder
API1, API2 | Бот
Цитата
<PtokaX> *** Nickolya2 с IP 127.0.0.1 был полностью забанен , наказал Nickolya по причине: test.

Код
    <String Name="FullLwr">полностью </String>
После полностью надо просто поставить неразрывный пробел big_smile.gif
Don_Kocha
1.9.2010, 23:17 Скриптик такой...
Смысл скрипта сокращение http ссылок
Invisible, DEN 007
1.9.2010, 23:14 ShortUrls
API2 | Скрипт сокращения ссылок в чате
Название: ShortUrls
Версия: 1.01
Версия API: API2
Автор: Nickolya
Запросил: DEN 007 здесь

Скрипт сокращает в чате все ссылки, превышающие заданный в скрипте порог длинны, через сервис http://is.gd/

При отправке в чат чего-то типа
Код
http://mydc.ru/ipb.html?act=Search&nav=at&CODE=show&searchid=8176c5fd684f87cf834d8493133d1cb3&search_in=topics&result_type=topics&lastdate=86400
мы получим
Цитата
<Nickolya> http://is.gd/ePQkt (сокращенная ссылка на mydc.ru)


Код
    Изменения в 1.01:
        - команда для получения короткой ссылки
        - профили, которым доступна команда
        - меню для команды


Из конфига можно выделить
Код
local iMaxLen = 40    -- максимальная длинна ссылки для отправки в чат без сокращения, при ее привышении ссылка будет сокращена
http.TIMEOUT = 1    -- таймаут для ответа от сервера, в секундах

local sSeeCmd = "getshorturl"    -- команда для получения короткой ссылки
local tCanUseCmdsProfiles = {    -- профили, которым можно использовать команду
    [0] = true,
    [1] = true,
    [2] = true,
    [3] = true,
    [-1] = false,
}
local sMenuWay = "Меню пользователя\\"    -- путь в меню


Для работы, естественно, потребуется установленная библиотека сокетов.

Старая версия
[attachment=4974:ShortUrl...a_v_1.00.lua]
Invisible, Accelerator, Saymon21, Aлзим, DEN 007, sania, Something_Wild
31.8.2010, 20:08 Предложения для развития
Есть подобная фишка в хексхабе, в верли тоже на команду отдельное событие. Я считаю что стоит сделать как с таймерами, т.е. функция типа
Core.AddTrigger("somecmd") будет возвращать айди события, а по событию будет вызываться функция OnTrigger(iId), при указании функции в Core.AddTrigger("somecmd", "SomeCmdFunction"), будет вызываьться функция, переданная вторым параметром. А вот передачу параметров в таблице tParams не считаю удобным т.к. они используются всегда по-разному (порой нужно взять параметры через пробел, порой нужна вся строка), поэтому можно просто передавать строку, идущую за командой.
Saymon21
30.8.2010, 23:36 Помогите перевести
Пожалуйста, скрипт просто ужасен, немного его подретушировал big_smile.gif Остальное, как было замечено выше, - на форуме...
OLGA
28.8.2010, 0:09 Hideme
скрипт скрытия в юзер-листе
Поправил скрипт немного, теперь всё работает, чтобы скрипт работал корректно он должен стоять поверх скрипта FirstRusHubBot.
В скрипте сделал вот так для клиентов, поддерживающих характеристику QuickList:
Код
OnGetNickList = OnValidateNick
Проверьте скрипт у кого есть в клиенте подобная характеристика... Скрипт в 1 посту.
Setuper, Saymon21
26.8.2010, 13:35 Официальная страничка RusHUB
Внимание - вопрос
Теперь прикручен и сайт, а не только домен exciting.gif Все доки перенес туда, надо теперь привести это к более информативному и актуальном виду, в топике русхаба только не знаю, надо ли это все дублировать, либо оставить только публикацию новых версий? Все замечания, предложения, мысли и мнения - в этой теме.
Ksan, Accelerator, Saymon21
25.8.2010, 6:10 Setting Saver
API2 | Сохраняет настройки хаба
Отправляет по таймеру только указанному нику. Смотри в настройках
Код
local sReportNick = "Tsd" -- Отправлять нику сообщение о сохранении по таймеру. Оставьте пустые кавычки если не надо
xXx-Portal
23.8.2010, 12:47 Полоса в меню
Поправил, и не забывайте что || надо заменить на & #124;| без пробела, естественно.
random name
18.8.2010, 11:49 Помогите !
со скриптом )
Надо всего-то удалить
Код
    tCommands["lifetime"].fFunction(user)


Старайся выражаться яснее, чтобы твоя просьба была понятна всем! На непонятные темы ответов не жди.
P.S.: за следующую названную ТАК тему будут вешаться предупреждения, после бана мог бы и ознакомиться с правилами форума.
Don_Kocha
16.8.2010, 16:58 Ваши Вопросы И Предложения По Поводу Форума
Вернул назад форму быстрого ответа и ее закрытость. Проблема с неработающим быстрым редактированием сообщений в теме устранилась.
Ksan, alex82
12.8.2010, 17:51 Поиск по TTH на MySQL
Мы уже немного обкатали скрипт с Saymon'ом, оказывается для нормальных ответов надо в файле Searcher.lua выставить настройку
Код
    -- Адрес программы-клиента:
    cfg.sServerAddress = "127.0.0.1"
таким образом, что ее значением будет ваш внешний айпи, на который присоединяются юзеры, именно айпи! К примеру
Код
    -- Адрес программы-клиента:
    cfg.sServerAddress = "93.125.40.40"
Плюс еще можно в скрипте lua.lua уменьшить интервал поиска, для более быстрой работы программы, сейчас там 15 секунд, попробуйте 10 или 5. Если что - заходите на хаб, спросите там, общаться в онлайне как-то оперативнее big_smile.gif Да и в фильтре тоже меняется адрес на ваш внешний, пока это недоработки, исправлю по возможности.
Saymon21
12.8.2010, 12:14 Поиск по TTH на MySQL
Итак, давайте попробуем 1 версию в действии big_smile.gif

Первым делом дополняем бд:
Код
ALTER TABLE `tbl_link`
    ADD `DATEUP` DATETIME NULL DEFAULT NULL ,
    ADD `DATEFIRST` DATETIME NULL DEFAULT NULL ,
    ADD `USERSEEDER` INT( 11 ) NOT NULL DEFAULT 0 ,
    ADD `USER` TEXT NOT NULL;


Теперь надо скачать программу, обрабатывающую поисковые ответы и работающую с бд, качаем из этого поста Searcher_server.rar и распаковываем куда-нибудь, теперь заходим в папке этого "сервера" в файл lua.lua и видим там конфиг, правим его как надо, указываем правильные юзера и пароль к бд, задаем порты, интервалы поиска и прочее. Сохраняем этот файл. Теперь создаем ярлык для lua.exe и в параметрах запуска добавляем ключ -d чтобы вышло что-то типа
Цитата
C:\Server\luaaio_2.0_windows\lua.exe -d
Теперь запускаем этот ярлык и сворачиваем получившееся окно.

Далее загружаем и кладем скрипт Searcher.lua в папку скриптов птоки, для работы скрипта потребуется библиотека сокетов. Запускаем скрипт в птоке и теперь можно посмотреть как пошел процесс в отладочном окне программы-поисковика (она свернулась в трей).

Пока все, если что-то непонятно - спрашивайте. Функций поиска с сайта пока нет, проверьте на баги первую версию...

P.S.: мне кажется понадобится пробросить порты программы в случае с роутером, их 2 штуки.
P.P.S.: результаты работы находятся в базе данных, не думаю что в отладочных сообщениях вам будет по-кайфу разбираться, они, в принципе, только для меня.
P.P.P.S.: от вас жду хака на магнето, выложенного так же публично
P.P.P.P.S.: при использовании скриптов было бы очень любезно сделать активную ссылку (хотя бы у копирайтов движка внизу) на этот форум.
Lesh™, Saymon21
11.8.2010, 23:56 Помогите реализовать скрипт с PtokaX для Verlihub
Вернее будет так:
Код
  local _,sIP = VH:GetUserIP(user)
Верли еще возвращает переменную результата выполнения запроса, которая нам обычно не нужна и ее можно опустить пустым значением. + не забываем делать переменные локальными big_smile.gif Плюс в верли есть такая штука, почти все вызываемые функции имеют обратимость, но для этого не как в птоке надо сделать return true, а вернуть отличное от 1 значение, если мы не хотим останавливать выполнение функции, то необходимо вернуть 1, тут такие функции помечены как Discardable. Потом необходимо добавлять | в конец отправляемых команд, так сделан верли... Так что выходит что пара функций у нас становится такими:
Код
function VH_OnUserLogin(user)
    VH:SendDataToUser("<"..Bot.."> Тема: '"..tTopic.Topic.."', установил "..tTopic.SetUser.." ("..tTopic.sDate..")|", user)
    local _,sIP = VH:GetUserIP(user)
    VH:SendDataToUser("<"..Bot.."> Привет "..user..", добро пожаловать на Дом.ru P2P сервис. Ваш IP: "..sIP.."|", user)
    return 1
end

function VH_OnParsedMsgChat(user,data)
    local cmd = data:match"%b<>%s+(%S+)"
    if cmd and cmd == "!topic" then
        local sMsg = data:match"%b<>%s+%S+%s+(.*)"
        if not sMsg then
            VH:SendDataToUser("<"..Bot.."> Вы не ввели текст топика|", user)
            return 0
        end
        tTopic = {
            sDate = os.date"%H:%M:%S / %d.%m.%y",
            SetUser = user,
            Topic = sMsg
        }
        SaveToFile(filename, tTopic, "tTopic")
    end
    return 1
end
Herurg
7.8.2010, 19:52 Хочу провести на хабе жеребьевку ФИФА Чемп мира
или лигу чемп всеравно
Держи, ники и команды надо вписывать руками... Результат выдается по запуску скрипта.
van21
4.8.2010, 19:00 Ваши Вопросы И Предложения По Поводу Форума
Setuper, вставляется в форум быстрого ответа. Обнови кеш, скорее всего проблема в нем т.к. обновлялись некоторые жаваскритпы. Не так уж и много добавилось, а левая панель скрывается. По-моему так удобней с некоторыми дополнительными функциями из основного редактора.
Saymon21
4.8.2010, 18:52 Ваши Вопросы И Предложения По Поводу Форума
Пока добавил кнопку для цитирования ника, сделал расширенным и всегда открытым быстрый ответ. Для основного скина добавил расширение для красивого отображения увеличенных картинок (по нажатию на миниатюре).
Ksan, Saymon21, X-Sky
3.8.2010, 16:08 IP Info
API2 | Информация об IP-адресах, отправленных в главный чат
По просьбе одного из участников форума добавил кое-какой функционал, протестируйте...

Цитата
Версия 1.01 by Nickolya:
- если в сообщении несколько ip - отображается информация по каждому
- добавлен вывод информации о доменных именах, теперь необходима еще и бибилиотека socket
- добавлена опция вывода сообщений об адресах для всех юзеров


Вот результат работы:
Цитата
<IP-Info> Информация об адресе mydc.ru ( 79.174.78.92 ) : Форум администраторов хабов ( Сервер mydc.ru )
<Nickolya> http://mydc.ru/ http://mydc.ru/ http://mydc.ru/
<IP-Info> Информация об IP-адресе 79.174.78.92: Сервер mydc.ru
<Nickolya> 79.174.78.92
<IP-Info> Информация об адресе www.ya.ru ( 93.158.134.3 ) : Поисковая система Яндекс
<Nickolya> www.ya.ru


P.S.: скрипт может сильно тормозить хаб из-за работы библиотеки сокетов...
intlive, rus.region78, Invisible, Saymon21, Chimera, Cyber_voodoo
2.8.2010, 23:06 С Днюхой Тебя!
поздравления
А сегодня поздравляем нашего повсеместного модератора, администратора и просто хорошего человека X-Sky! Всего хорошего, развития твоих проектов, успехов во всех остальных начинаниях и конечно же оставаться и совершенствоваться в нашем сообществе! victory.gif victory.gif victory.gif
X-Sky
30.7.2010, 12:59 Нужен скрипт ставящий люб приставку перед ником!
Чтоб она везде отображался на хабе
Уже обсуждалось что не надо делать какие-либо приписки к никам в юзер-листе. Пусть ставят сами, а если не дано - пусть не суются... Либо берись писать инструкцию в картинках что да куда нажимать чтобы сменить ник.
van21
27.7.2010, 23:27 HubTopic
Скрипт показывающий ваш текст в строке состояния
Скрипт менюшек выполняет функцию OnUserEnter при отсылке меню, чтобы не было повторной отправки надо заменить
Код
function OnUserEnter(UID)
    if tAccess[UID.iProfile] then
        Core.SendToUser(UID,"$UserCommand 1 3 "..tCfg.Menu.."\\Установить тему$<%[mynick]> !хабтопик %[line:Введите тему чата]|")
        Core.SendToUser(UID,"$UserCommand 0 3")
        Core.SendToUser(UID,"$UserCommand 1 3 "..tCfg.Menu.."\\Удалить тему$<%[mynick]> !хабтопик офф|")
    end
    if sHubTopic then
        Core.SendToUser(UID,"$HubTopic "..sHubTopic)
    end
end
на
Код
function OnUserEnter(UID)
    if sHubTopic then
        Core.SendToUser(UID,"$HubTopic "..sHubTopic)
    end
    ContextMenu(UID)
end

function ContextMenu(UID)
    if tAccess[UID.iProfile] then
        Core.SendToUser(UID,"$UserCommand 1 3 "..tCfg.Menu.."\\Установить тему$<%[mynick]> !хабтопик %[line:Введите тему чата]|")
        Core.SendToUser(UID,"$UserCommand 0 3")
        Core.SendToUser(UID,"$UserCommand 1 3 "..tCfg.Menu.."\\Удалить тему$<%[mynick]> !хабтопик офф|")
    end
end


А чтобы сменить топик надо отправлять еще и $HubName, но надо не забыть в нем имя хаба big_smile.gif
Saymon21
27.7.2010, 22:38 Скрипт статистики для админов
Статистические данные о посещаемости
valdis73, если надо скрипт можно сделать так чтобы он считал только определенных пользователей. Опиши тут как лучше, по приставке в нике или по диапазону адресов и мы тебе скажем что сделать чтобы получить желаемое тобой.
valdis73, мамин_парень
26.7.2010, 21:54 Trans
API1, API2
Сделал проверку слова на ник юзера, может кривовато работать...
Invisible
26.7.2010, 18:33 Cleanreg
API2 | Скрипт чистки регистраций
Если скрипт работает, то его синтаксис тебя не должен заботить, прекращай заниматься ерундой.

Не уверен что внятно и правильно объяснил, но если интересно - попробуй вникнуть
А ошибка из-за того что к таблице 'SetMan' идет обращение в основной части программы, а не в функции, а существует таблица только когда хаб включен и скрипт запущен.
striker
26.7.2010, 17:02 Скрипт статистики для админов
Статистические данные о посещаемости
Приделать функцию работы исключительно с определенным диапазоном адресов можно, не думаю что это будет проблемой, тем более код очень хорошо прокомментирован.
Тем более все упирается в одну строку в скрипте))))

Код
local iUC = Core.GetUsersCount()  -- текущее кол-во юзеров
valdis73, мамин_парень
26.7.2010, 10:05 Ваши Вопросы И Предложения По Поводу Форума
"Архив" создал, перенес в него все что было, по тому посту выше о перемещении тоже все сделано, теперь ищите всю информацию в соответствующих разделах bad_smile.gif Если у модераторов есть мысли по разделам и/или перемещению/удалению тем - пишите, разложим все по полкам, ведь отдельный форум для этого и создавался.
Setuper, Saymon21
26.7.2010, 1:07 Ваши Вопросы И Предложения По Поводу Форума
А пока тихо и незаметно появились разделы Скрипты для Eximus, Библиотеки и модули, Сетевые скрипты и Безопасность. Первые 2 раздела я заполнил перенесенными темами, последние два возлагаю на ваши плечи. Все замечания, как всегда, обсуждаются здесь.
Otshelnik-Fm, Saymon21
24.7.2010, 19:44 Сообщение юзерам с нулевой шарой
Сообщение юзерам с нулевой шарой
Если ты про скрипт Артема - то надо сделать все то что я описывал выше и добавить еще в самом конце
Код
ChatArrival = UserConnected
Perspect
23.7.2010, 23:22 Логотип для RusHub'а
ваши варианты и предложения
Продолжим творческий марафон big_smile.gif Жду Ваших оценок...
KT315, Saymon21, X-Sky
23.7.2010, 10:41 С Днюхой Тебя!
поздравления
Хочу поздравить Илью (он же наш модератор Wariner) с Днем Рождения! Всех благ, светлой головы, доброго настроения, чистой души и конечно же правильного кода feel_good.gif

Лично от меня - спасибо за то что состоялось такое знакомство big_smile.gif
Wariner
20.7.2010, 14:00 Запрет пустого сообщения
API 2
Да, не позволит, но он не учитывает неразрывный пробел, поэтому будет достаточно вот такого кода
Код
function ChatArrival(tUser, sData)
    if sData:find("^%b<>[%s"..string.char(160).."]+|$") then
        return true
    end
end
Serx, Saymon21, RoL, WINS, мамин_парень
15.7.2010, 16:18 ChatNickChanger by Nickolya
API2 | Скрипт смены ников выводимых в чат
Чтобы не палиться при использовании команды кика через клиента (при отправке <nick> is kicking ... because: ...) необходимо
перед
Код
    local tChangedNickTable = tChangedChatNicks[tUser.sNick] or false
добавить
Код
    if sData:match "^%b<>%s+is%s+kicking%s+.+$" then
        return
    end
Milena, Saymon21
9.7.2010, 10:47 Часто задаваемые вопросы
Eximius | Читать всем без исключения!
Я так понимаю это изложение своими словами и опытом вот этой темы? Спасибо тебе Тём! Надеюсь тут для новичка понятнее.
sania
6.7.2010, 9:56 Help
Возможноли зделать RSS парсинг с UCOZ сайта
Берем тогда обычный скрипт рсс, можно отсюда: RSS Ленты, API2 | Скрипт для просмотра новостных лент, конфигурируем, можно допилить как надо. Все что я сделал - добавил перекодирование из утф8 и указал адрес ленты + поправил косяк с сохранением файла.
Wan
5.7.2010, 17:50 Fuck2UnReg
API1, API2 | Скрипт ограничений для незарегистрированных юзеров
Надо конечно. В самое начало тогда добавляй таблицу с профилями блокируемых:
Код
tLockProfiles = {
    [3] = true,
    [-1] = true,
}

И 3 раза в скрипте заменяй
Код
if tUser.iProfile == -1 and
на
Код
if tLockProfiles[tUser.iProfile] and
truth, мамин_парень
5.7.2010, 17:14 Eximius
Windows
Создал я отдельный форум. От вас жду наполнения информацией по данному хабу. Артём, ты модерируешь этот форум.
Артём, Saymon21
5.7.2010, 14:37 Домены Для Вашего Хаба
Как думаете?
Домены есть, не было меня big_smile.gif Домен оформил: sinsei.mydc.ru
Sinsei
5.7.2010, 11:45 Помогите со скриптом для птоки который удалялбы неиспользуемые реги
Помогите со скриптом для птоки который удалялбы неиспользуемые реги
Темы я кое-как совместил. Автору - сначала изучай форум, потом пиши, ок?
X-Sky, bot9ra
28.6.2010, 9:14 Джинглы "русского Радио"
API2 | Вывод случайного джингла из текст.базы
В
Код
function UserConnected(user)
    Core.GetUserAllData(user)
    INFUserRightclicker(user,data)
    INFTMR(user, true)
end
удалить
Код
INFTMR(user, true)
GangstaR, prokazzza
25.6.2010, 20:59 Пустые строки в тригерах
Открываешь файл в Notepad++, там выбираешь "Правка"->"EOL Конверсия"->"Преобразовать в UNIX-формат"
переподвыподверт
25.6.2010, 20:50 Радио для хаба
информационный скрипт
Изучи эти 3 темы:
Winamp Server Radio, API1 | Радио для пользователей хаба через Winamp
Срипт ON AIR
Скрипт для icecast

Затем еще хотелось бы видеть ссылку на информацию что тебе нужна. Мы же не знаем какой у тебя формат данных чтобы сделать анализ реально ли это или нет.
Saymon21, мамин_парень
24.6.2010, 11:03 Elf Girls
API2 | Бот-болтун
Удали

Код
    TimerR = TmrMan.AddTimer(math.random(math.mintime,math.maxtime)) -- this timer works it gives a nice interval between chat

Код
    chatter = convos[math.random(1,#convos)]

Код
    if tID == TimerR then
        Core.SendToAll("<"..prefix..elf.."> ".. chatter)
        for i,v in pairs(BotTrig) do
            for a,b in pairs(v) do
                if(string.find(string.lower(chatter),string.lower(i))) then
                    --// start a new timer after the trigger
                    --// this shld give different delays on answer questions from bot to bot
                    TimerD = TmrMan.AddTimer(ChatDelay[math.random(1,table.getn(ChatDelay))])    
                    reply = reply..""..string.gsub(v[math.random(1,table.getn(v))], "%b[]",v)
                    return true
                end
            end
        end
    end
prokazzza
24.6.2010, 9:38 PM при подключении
Можно и вот так попробовать:
Код
iTimerInterval = 60*60    -- время в секундах на рассылку сообщений никам

tNicksToSend = {    -- ники для отправки
    ["Nickolya"] = true,
    ["Nick2"] = true,
}

-- само сообщение:
sMsg = "*** Сообщение от администрации..."

function OnStartup()
    sBot = SetMan.GetString(21)
    TmrMan.AddTimer(iTimerInterval * 1000, "Send")
end

function Send()
    for sNick in pairs(tNicksToSend) do
        Core.SendPmToNick(sNick, sBot, sMsg)
    end
end

function UserConnected(tUser)
    if tNicksToSend[tUser.sNick] then
        Core.SendPmToUser(tUser, sBot, sMsg)
    end
end
OpConnected = UserConnected
RegConnected = UserConnected
мамин_парень
23.6.2010, 19:08 Скрипт для отключения скрипта
Нужен скрипт для отключения скрипта по времени
А скрипт у тебя так и называется?
Код
sName = "antimat.lua"
Надо сменить эту настройку на имя твоего файла для работы скрипта. + Я внес 1 правку, скопируй код их поста alex82'а выше заново.
Dan Claimant, Тёмич
23.6.2010, 18:53 Weather [ Api 1&2 ] [ By Nickolya ]
API2 | Расширенная погода с rp5.ru
Может фиксы были только во 2 апи ввиду его текущей поддержки как основного. Попробуй поправить скрипт в соответствии с моими правками в середине этой темы. Ни у кого больше таких проблем сейчас нет??
7up
20.6.2010, 17:57 Freshstuff3 5.0.1
API2 | Русская версия | Скрипт релизов и заказов
Я лишь предположу что это код из файла freshstuff/ptokaxnew.lua в котором надо удалить:
Код
  if #AllStuff > 0 then
     -- to avoid sync errors and unnecessary function calls/tanle lookups
     -- declare the local variable
    local stuff = WhenAndWhatToShow[os.date("%H:%M")]
    if stuff then
      if Types[stuff] then
        Core.SendToAll("<"..Bot.name.."> "..ShowRelType(stuff))
      else
        if stuff == "new" then
          Core.SendToAll("<"..Bot.name.."> "..MsgNew)
        elseif stuff == "all" then
          Core.SendToAll("<"..Bot.name.."> "..MsgAll)
        else
          Core.SendToOps("<"..Bot.name.."> В таймер лист была добавлена категория, которой не существует. Нечего выводить. :-)")
        end
      end
    end
  end
prokazzza
19.6.2010, 14:04 Админка
че то не понятно!
И конечно лучше еще воспользоваться RusRC.
voronf4
17.6.2010, 20:27 Скрипт Release для PtokaX 0.4.1.x
нужен скрипт аля Release or Request (by jiten) под API2
По-быстрому перевел, проверил только поверхностно. Базы можно взять старые.
А команды скрипта может блокировать скрипт выше этого, попробуй запустить его одного на хабе.
foralls, мамин_парень
17.6.2010, 9:31 Antibot
API2 | Скрипт против ботов
В принципе сумма 2 чисел - арифметическая задачка, решение которой в флуд-боте реализовать не сложно. Но решение задачи можно реализовать во всех вариантах, надо что-то конкретно человекозависимое, капчу мы не берем т.к. это дц. Можно выводить произвольный ряд чисел и просить выбрать большее/меньшее, это интуитивно проще чем складывать числа, к примеру:
Цитата
Выберите меньшее из чисел: 463, 23567, 45, 57213, 49, 730, 358


Еще хочу вам предложить пару идей для скрипта, если одобрите - реализуем: если юзер возвращается на хаб под тем же айпи, что был у него при вводе команды, то ему не надо вводить код, можно к этому ввести ограничение по времени для действия этой функции, 1 день, к примеру. И еще можно не переспрашивать код если человек вернулся на хаб в течении 5 минут вне зависимости от айпи.
Drakula
15.6.2010, 16:26 ChatLogsMySQL
версия 4.3d
Accelerator, а экранирование данных в запросах ты вообще не применяешь? Получается огромная брешь в скрипте...
Accelerator
10.6.2010, 19:44 Weather [ Api 1&2 ] [ By Nickolya ]
API2 | Расширенная погода с rp5.ru
Да, скрипт полностью ориентирован на интернет, без него смысла не имеет. Чтобы убрать зависания на минуту выстави сам максимальное время на ожидание ответа от библиотеки. Для этого после
Код
    http = require("socket.http")    -- loads the HTTP module and any libraries it requires (загружаем библиотечку)
добавляй
Код
    http.TIMEOUT = 2

Где 2 - время в секундах на "зависание" хаба.
prokazzza
9.6.2010, 9:43 Открытие хаба
-=FugeN=- 2, по-моему все справедливо, не прикидывайся идиотом. Перечитай причину бана и перестань заниматься дурью в нашем сообществе.
Maximum, Berkut, Saymon21, andromed
7.6.2010, 18:46 Запрет снятия банов, поставленных другими людьми
Попробовал учесть ваши пожелания, доработав набросок Alexey'а. Добавил таблицу ников, на которые не будет действовать скрипт:
Код
local tSuperUsers = {
    ["Nickolya"] = true,
}


P.S.: не тестил...
Saymon21, bot9ra, AndreiDC
7.6.2010, 13:44 Запрет снятия банов, поставленных другими людьми
Перечисли список команд, которые должен проверять скрипт. + еще есть команда очистки всех банов, которую я думаю надо запретить ОПам...
bot9ra
7.6.2010, 13:01 Ipgag V.3.01
API1 | навороченная заглушка юзеров
В файле Ip.gag.3.0.functions.lua найди
Код
    local data = string.sub(data,1,-2)
    local _,_,cmd = string.find(data,"%b<>%s"..prefix.."(%S+)")
    if cmd and cmdlist[cmd] then
        if CheckRights(user,cmd) == 1 then
            return cmdlist[cmd]["Function"](user,data)
        else
            user:SendData(BOT,"У вас нет прав, для использования данной команды")
        end
    end
затем вырежи этот код и помести сразу за
Код
function ChatArrival(user, data)
тогда команды будут работать. А вообще мой тебе совет - уволь дурацких ОПов и проблема исчезнет сама по себе.
Kocha
7.6.2010, 10:04 Проблемка с малюсеньким скриптиком для экзекутора! Кто поможит?
Проблемка с малюсеньким скриптиком для экзекутора! Кто поможит?
Поменяй
Код
ChatArrival = function(tUser,sData)
    local s,e,cmd, S1= string.find(sData,"%b<>%s(%S+)%s(.+)")
    if ((cmd=="!экшн") or (cmd=="!action")) and (tProfiles[tUser.iProfile]==0) then
        Core.SendToUser(tUser,"<"..SetMan.GetString(21).."> Недостаточно прав для выполнения команды")
        return true
    end
    S1 = string.sub(S1,1,string.len(S1)-1)
    if cmd == "!экшн" then        
        Core.SendToAll("## "..tUser.sNick.." "..S1.." ##")
        return true
    end
    if cmd == "!action" then
        Core.SendToAll(">> "..tUser.sNick.." "..S1.." <<")
        return true
    end
    
end
на
Код
ChatArrival = function(tUser,sData)
    local s,e,cmd, S1= string.find(sData,"%b<>%s(%S+)%s(.+)")
    if ((cmd=="!экшн") or (cmd=="!action")) and (tProfiles[tUser.iProfile]==0) then
        Core.SendToUser(tUser,"<"..SetMan.GetString(21).."> Недостаточно прав для выполнения команды")
        return true
    end
    if S1 then
        S1 = string.sub(S1,1,string.len(S1)-1)
        if cmd == "!экшн" then        
            Core.SendToAll("## "..tUser.sNick.." "..S1.." ##")
            return true
        end
        if cmd == "!action" then
            Core.SendToAll(">> "..tUser.sNick.." "..S1.." <<")
            return true
        end
    end
end
bot9ra, sania
6.6.2010, 14:51 Проблемка с малюсеньким скриптиком для экзекутора! Кто поможит?
Проблемка с малюсеньким скриптиком для экзекутора! Кто поможит?
Может стоит выложить твою "дописку" (можно околоошибочный код)? Без этого тебе никто не подскажет какая ошибка в коде. Или ищи на форуме решение частых проблем.
bot9ra
4.6.2010, 14:29 Антиреклама для PtokaX
API1, API2 | Скрипт антирекламы для чата и лички
Спасибо за скрипт, но будьте добры его прикладывать к сообщению, ссылки на сторонние хранилища не приветствуются.
мамин_парень
4.6.2010, 10:01 Домены Для Вашего Хаба
Как думаете?
4eBA, если на второй хаб - можно, на 1 хаб 2 домена не делаем.
Чебурашка
2.6.2010, 12:27 Скрипт для icecast
А... В принципе можно сделать команду вывода того что выводится по таймеру. Не более, для остального просто нет информации. Как будет возможность - добавлю.
belradio
2.6.2010, 10:16 От: Экзекутор (ekzekutor)
От темы с ID: 1403
Конечно поможем! big_smile.gif Если что - мы часто на хабе, да и на форуме стараемся оперативно отвечать.
Saymon21
2.6.2010, 9:58 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
А если сделать вот так?
Код
function GetNickListArrival(tUser)
  if not Core.GetUserValue(tUser, 9) then -- bConnected
    Core.SendToUser(tUser,"<"..sBot.."> Загрузка...")
  end
end
$GetNickList же отсылается в любом случае big_smile.gif Однако надо контролировать зашел ли юзер на хаб, иначе при каждом обновлении юзерлиста будет выполняться код.
VNoName
30.5.2010, 23:37 Скрипт для icecast
В пхп коде разбираться не охота, но такую страницу пропарсить - плевое дело. Вот пример кода который выдает в чат с заданными интервалом информацию о станции в виде
Цитата
<PtokaX> *** 0 человек сейчас слушают на BelRadio [ http://94.232.9.212:8000/nonstop.m3u ] - Alesha Dixon - The Boy Does Nothing


Учел возможность данных в утф и еще кое-какие приятные мелочи, смотрите в настройках big_smile.gif Для работы понадобится библиотека LuaSocket.

Сейчас заметил что количество слушателей не показыватся, поэтому это можно опустить заменив
Код
Core.SendToAll(sBot..""..iListeners.." человек сейчас слушают на "..sServer.." [ "..sSendUrl.." ] "..sWeListen)
на
Код
Core.SendToAll(sBot.."На "..sServer.." [ "..sSendUrl.." ] сейчас играет: "..sWeListen)


И еще вижу что русские буквы выводятся в непоймикакой кодировке... :( Скрипт выводит их как нижнее подчеркивание.

У вас там вывод идет в CP1252 вместо CP1251, хотя вообще должно быть в утф, с этой кодировкой мы вообще не работали, может кто скажет как перевести средствами скрипта по аналогии с этими функциями? Вот таблицы кодировок: CP1252 и CP1251. Или может собрать iconv под птоку?
HackFresse, Saymon21, dj_crazy_joker
29.5.2010, 15:16 Antibot
API2 | Скрипт против ботов
Код
*     Версия 1.2 by Nickolya
*      + сообщения отсылаются от ника бота хаба
*      + при сообщении от бота в привате указывается что сообщение доставлено не было
*      + блокировка юзера на заданное время при заданном количестве неправильных ответов на вопрос: опции iBlockNumbers и iBlockTime
*      + если юзер, которому разрешено писать, напишет тому, кому это запрещено, то на вопрос отвечать не придется, но только в привате написавшего юзера
Артём, Drakula, stone
29.5.2010, 14:16 От: StatPX
От темы с ID: 1269
Попробуй отсюда скачать. Запаковал в rar.
Wan
29.5.2010, 14:02 TopicManager
API2 | Управление заголовком хаба
Чтобы не вылетала ошибка в 220 строке замените
Код
Core.SendPmToNick(tControlNicks[i], sBot,("%s пытался сменить топик на: %s"):format(tUser.sNick, sTopic))
на
Код
Core.SendPmToNick(tControlNicks[i], sBot,("%s пытался сменить топик на: %s"):format(tUser.sNick, sTopic or "[пустая команда]"))


X-Sky, чтобы дополнить топик не надо вписывать еще 1 аргумент, надо дополнить строку:
Код
SetMan.SetString(10, sTopic.." ("..tUser.sNick..")")


С обновлением топика ты заморочал конечно, тебе надо чтобы при определенной команде в топике было 2 топика? scorn.gif
X-Sky
29.5.2010, 13:42 Textfiles_manager_and_updater
API1, API2 | Обновление TXT файлов по интервалу
Добавил нужную тебе фишку в скрипт, надеюсь все как надо, плюс совместил апи 1 и 2 в одном скрипте и профиксил один глюк там.
Invisible, Kingston, TiGRpp, ramzes
26.5.2010, 10:48 InfoMenu
API2 | Скрипт показывающий информацию о хабе и о юзере в меню
Заменить
Код
a,b,c = tonumber(a),tonumber(b),tonumber(c)
на
Код
a,b,c = tonumber(a or 0),tonumber(b or 0),tonumber(c or 0)
Saymon21, TiGRpp, ™Wizard™, sania
23.5.2010, 20:53 Нужен скрипт описания.
Может проще отключить его в принципе своем? Или там необходимо у всех что-то писать??? Подобные скрипты для птоки - сущий изврат.
intlive, forZejkee
23.5.2010, 19:06 BanLogger
API2 | Логирование банов, вывод в чат по команде
Обрезанный донельзя скрипт:

CODE
tBanCmds = {
ban = true,
banip = true,
fullban = true,
fullbanip = true,
nickban = true,
tempban = true,
tempbanip = true,
fulltempban = true,
}

function OnStartup()
sBot = SetMan.GetString(21)
tWhomWeSee = {}
tBansLog = {}
tMasterBansLog = {}
sPath = Core.GetPtokaXPath().."scripts/"
if loadfile(sPath.."tBansLog.tbl") then
dofile(sPath.."tBansLog.tbl")
end
if loadfile(sPath.."tMasterBansLog.tbl") then
dofile(sPath.."tMasterBansLog.tbl")
end
TmrMan.AddTimer(1000, "OnTimer1")
end

function OnTimer1()
local tRemove = {}
for i, tData in ipairs(tWhomWeSee) do
local tBan = BanMan.GetBan(tData[1])
if tBan then
if tBan[1] then
tBan = tBan[#tBan]
end
local tBanTbl = {
sBy = tBan.sBy or tData[2],
iTime = tData[3],
iExpireTime = tBan.iExpireTime,
sIP = tBan.sIP,
sNick = tBan.sNick,
bIpBan = tBan.bIpBan,
bNickBan = tBan.bNickBan,
bFullIpBan = tBan.bFullIpBan,
sReason = tBan.sReason,
}
if tBanTbl.sNick then
if not tBansLog[tBanTbl.sNick] then
tBansLog[tBanTbl.sNick] = {}
end
table.insert(tBansLog[tBanTbl.sNick], tBanTbl)
end
if tBanTbl.sIP then
if not tBansLog[tBanTbl.sIP] then
tBansLog[tBanTbl.sIP] = {}
end
table.insert(tBansLog[tBanTbl.sIP], tBanTbl)
end
if not tMasterBansLog[tData[2]] then
tMasterBansLog[tData[2]] = {}
end
table.insert(tMasterBansLog[tData[2]], tBanTbl)
SaveToFile(sPath.."tBansLog.tbl", tBansLog, "tBansLog")
SaveToFile(sPath.."tMasterBansLog.tbl", tMasterBansLog, "tMasterBansLog")
table.insert(tRemove, 1, i)
elseif tData[3] + 5 > os.time() then
table.insert(tRemove, 1, i)
end
end
for _, i in ipairs(tRemove) do
table.remove(tWhomWeSee, i)
end
end

function ChatArrival(tUser, sData)
local _,_, sCmd, sWhoBanned = string.find(sData, "%b<>%s+%p(%S+)%s+(%S+).*|$")
if sCmd then
sCmd = sCmd:lower()
if sWhoBanned and tBanCmds[sCmd] then-- and not BanMan.GetBan(sWhoBanned) then
table.insert(tWhomWeSee, {sWhoBanned, tUser.sNick, os.time()})
end
end
end
ToArrival = ChatArrival

function SaveToFile(sFileWay, tTable, sTableName)
local sHandle = io.open(sFileWay,"w+")
Serialize(tTable, sTableName, sHandle)
sHandle:flush()
sHandle:close()
end

function Serialize(tTable, sTableName, sHandle, sTab)
local sTab = sTab or ""
sHandle:write(sTab..sTableName.." = {\n")
for key, value in pairs(tTable) do
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key)
if type(value) == "table" then
Serialize(value, sKey, sHandle, sTab.."\t")
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value)
sHandle:write(sTab.."\t"..sKey.." = "..sValue)
end
sHandle:write(",\n")
end
sHandle:write(sTab.."}")
end
X-Sky
23.5.2010, 18:19 Вопрос по Командам PtokaX 0.4.1.1
хочу узнать
Ответ тут. Надеюсь найдешь в ответе и осознаешь. Для полной уверенности покопайся в менеджере профилей.
-=FugeN=- 2
21.5.2010, 15:17 С Днюхой Тебя!
поздравления
Спасибо! Заодно можно считать что и форуму исполнился еще 1 год big_smile.gif По моим скромным подсчетам, если я ничего не упустил, это 2 года! Всем преданным читающим админам - СПАСИБО! feel_good.gif
Saymon21
20.5.2010, 12:11 Редирект по времени
Если еще актуально - вот, набросал по-быстрому:
Код
-- Профили для перенаправления:
tRedirectProfiles = {
    [3] = true,
    [-1] = true,
}

-- Таблица редиректов:
tRedirects = {
    "mydc.ru", "localhost",
}

-- Время в секундах на смену сервера
iChangeTime = 1*60*60

-- Минимальная для входа шара, в байтах:
iMinShare = 100*1024^3    -- 100 Gb

-- Причина редиректа:
sRedirectReason = "Маленькая шара, минимальная шара - 100 Гигабайт!"

function OnStartup()
    iTimeToChange = os.time() + iChangeTime
    iRedirectHub = 1
end

function UserConnected(tUser)
    if tRedirectProfiles[tUser.iProfile] and (Core.GetUserValue(tUser, 16) or 0) < iMinShare then
        if os.time() > iTimeToChange then
            iTimeToChange = os.time() + iChangeTime
            iRedirectHub = iRedirectHub + 1
            if not tRedirects[iRedirectHub] then
                iRedirectHub = 1
            end
        end
        Core.Redirect(tUser, tRedirects[iRedirectHub], sRedirectReason)
        Core.Disconnect(tUser)
    end
end
RegConnected = UserConnected
OpConnected = UserConnected
Exodus, мамин_парень
19.5.2010, 23:22 Подправьте скриптик регистрации
Нужно подправить скрипт регистрации
Если у тебя
Код
tProfiles = {        -- кому будут доступны команды
    [5]     = 1,    -- [Reg]
    [4]     = 1,    -- [ViP]
    [3]     = 1,    -- [Operator]
    [2]     = 1,    -- [Moderator]
    [1]     = 1,    -- [Admin]
    [0]     = 1,    -- [VipAdmin]
    [-1]     = 0,    -- [UnReg]
}
то для доступа Operator, Moderator, Admin, VipAdmin надо сделать таблицу такой:
Код
local CanDo ={[3]=1,[2]=1,[1]=1,[0]=1,}


Разбирайся и пробуй или излагай то, что ты хочешь в понятной для всех форме и, что главное, в полном объеме.
sania
19.5.2010, 22:57 Проблемы скрипта действий! Исправьте
Проблемы скрипта действий! Исправьте
Код
ChatArrival = function(tUser,sData)
    local s,e,cmd, S1= string.find(sData,"%b<>%s(%S+)%s(.+)")
    if ((cmd=="!экшн") or (cmd=="!action")) and (tProfiles[tUser.iProfile]==0) then
        Core.SendToUser(tUser,"<"..SetMan.GetString(21).."> Недостаточно прав для выполнения команды")
        return true
    end
    S1 = string.sub(S1,1,string.len(S1)-1)
    if cmd == "!экшн" then        
        Core.SendToAll("## "..tUser.sNick.." "..S1.." ##")
        return true
    end
    if cmd == "!action" then
        Core.SendToAll(">> "..tUser.sNick.." "..S1.." <<")
        return true
    end
    
end
замени на

Код
ChatArrival = function(tUser,sData)
    local cmd, S1 = sData:match "^%b<>%s(%S+)%s(.+)$"
    if cmd then
        if ((cmd=="!экшн") or (cmd=="!action")) and (tProfiles[tUser.iProfile]==0) then
            Core.SendToUser(tUser,"<"..SetMan.GetString(21).."> Недостаточно прав для выполнения команды")
            return true
        end
        S1 = string.sub(S1,1,string.len(S1)-1)
        if cmd == "!экшн" then        
            Core.SendToAll("## "..tUser.sNick.." "..S1.." ##")
            return true
        end
        if cmd == "!action" then
            Core.SendToAll(">> "..tUser.sNick.." "..S1.." <<")
            return true
        end
    end
end
sania
19.5.2010, 9:41 слоты хаба
проблема на ptokax 0.4.1.1
Ищи в этой области, если галка не стоит, то информация отправляется, и поставить надо "Всем юзерам".
baralgin
18.5.2010, 18:44 слоты хаба
проблема на ptokax 0.4.1.1
Скорее всего его клиент завязывает какой-нибудь параметр, типа автобана, на слотах, поэтому надо либо включить отображение тегов для всех в хабе, что рекомендуется для нормального файлообмена, либо копать настройки его апекса, либо ему сменить клиент.
baralgin
17.5.2010, 22:58 Kinozal_tv
API2 | Скрипт новостей с трекера
Добавь после
Код
UserConnected = function(user)
следующий код:
Код
    if os.time() > iLastTime then
        GetInfo()
    end
    Core.SendPmToUser(user, sBot, sMsg)
Проще некуда и никаких финансовых вложений big_smile.gif
serrrios, Greeck, ImDim
16.5.2010, 18:39 BashMySQL
API2 | Цитатник рунета
Отваливается соединение с БД, сделай как я писал чуть выше, и, если надо, сделай меньше интервал переподключения.
Parad0x
14.5.2010, 9:53 DC++ FAQ
Часто Задаваемые Вопросы
2alex82: [attachment=4496:_____________.png]

2=FugeN=- 2: поправил бы информацию и выделил все как надо чтобы было наглядно.
alex82, Alexey, мамин_парень
13.5.2010, 20:06 Ник
нужна помощь
Цитата
Настройки -> Общие -> Вид -> Показывать статусные сообщения в главном чате

Включи эту опцию и зайди на хаб со стандартным ником. Потом к автору сборки с просьбой не морочать мозги юзерам и включить эту опцию по умолчанию... А так все пишется в статусной строке:
[attachment=4495:Olimpus_shit.png]
voronf4
13.5.2010, 19:38 StatPX
API1, API2 | Статистика хаба
А база данных - не выход из ситуации? Хочешь пользоваться хорошей статистикой - ставь мускл и точка.
shullz
11.5.2010, 18:52 CheckPreFix
API2 | контролирует приставку перед ником
Странно что об этой ошибке не сообщили ранее... Замени строку 66
Код
            return Net_ISP, Net
на
Код
            return Net_ISP.tPrefs, Net

FallenAngel, ты сам разобрался с этой ошибкой?
FallenAngel, Drakula
11.5.2010, 11:39 Фидонет?
Запарено как-то это в интернете написано, может кто на пальцах рассказать?!
X-Sky
11.5.2010, 10:31 FirstRusHubBot
приводим RusHub к рабочему виду функционалом скриптов
Понятия ID нету в протоколе NMDC, так что банить по нему нельзя, по маку банить можно только в пределах сети где стоит хаб, это уже обсуждалось неоднократно, в птоке это не реализуемо. Если интересно - поищи по форуму.
Drakula
5.5.2010, 13:39 Функции Для Разработчиков
склад полезных функций
А смысл тасовать локали? При старте скрипта обозначил на русскую и пользуйся себе чисто string.lower и string.upper
Ksan
3.5.2010, 20:48 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
К примеру так:
Код
sWay = "D:/somefile.html?#34;

sHTML = [[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Какая-то инфа...</title>
</head>

<body>
<table border="1" cellspacing="0" cellpadding="10">
  <tr>
    <td>Ник Забаненого</td>
    <td>Ip Забаненого</td>
    <td>Кем забанен</td>
    <td>Причина бана</td>
    <td>Разбан</td>
  </tr>
[BODY]
</table>
</body>
</html>]]

sTableSell = [[ <tr>
    <td>[1]</td>
    <td>[2]</td>
    <td>[3]</td>
    <td>[4]</td>
    <td>[5]</td>
  </tr>]]

function OnStartup()
    SaveToHtml()    
end
    
function SaveToHtml()
    local tTable = BanMan.GetBans()
    local sData = {}
    for i,v in pairs(tTable) do
        local tData = {
            ["1"] = tostring(v.sNick or " "),
            ["2"] = tostring(v.sIP or "Бан по нику"),
            ["3"] = tostring(v.sBy or "Неопределена"),
            ["4"] = tostring(v.sReason or "Не указана"),
            ["5"] = tostring(v.iExpireTime or "<постоянный>"),
        }
        local sSell = sTableSell:gsub("%[(%S-)%]", tData)
        table.insert(sData, sSell)
    end
    sData = table.concat(sData)
    local sHTML = sHTML:gsub("%[BODY%]", sData)
    SaveDataToFile(sWay, sHTML)
end


function SaveDataToFile(sFileWay, sData)
    local sHandle = io.open(sFileWay, "w+")
    sHandle:write(sData)
    sHandle:flush()
    sHandle:close()
end
intlive
3.5.2010, 20:32 Блок по тегу
Скрипт блокировки по тегу
Попробуй второй из предложенных в 12 посту темы, может он будет работать, написан он по аналогии с тем что предлагали тебе первым.
valdis73
3.5.2010, 20:00 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
Видимо ты плохо знаешь html, вот пример таблицы, которая тебе нужна, строка идет в структуре таблицы значениями друг за другом, так что трудности вывести все баны в такую таблицу - минимум:
Код
<table border="1" cellspacing="0" cellpadding="10">
  <tr>
    <td>Ip Забаненого</td>
    <td>Кем забанен</td>
    <td>Причина бана</td>
    <td>Разбан</td>
  </tr>
  <tr>
    <td>127.0.0.1</td>
    <td>Nickolya</td>
    <td>просто так</td>
    <td>никогда...</td>
  </tr>
  <tr>
    <td>10.0.10.3</td>
    <td>неизвестно</td>
    <td>аналогично</td>
    <td>через 14 минут</td>
  </tr>
</table>
intlive
2.5.2010, 11:23 User Info 1.0 (русская Версия)
API2 | Скрипт для просмотра информации о юзерах
Чтобы понимало и кириллические буквы надо
Код
local _,_,nick = string.find(data,"%p%S+ (%w+)")
заменить на
Код
local _,_,nick = string.find(data,"%p%S+ (%S+)")
Invisible, DrakonSP, Saymon21, TiGRpp
30.4.2010, 13:55 Логотип для RusHub'а
ваши варианты и предложения
Вот еще вариант...
X-Sky, bot9ra
29.4.2010, 21:55 Логотип для RusHub'а
ваши варианты и предложения
Уффффф...
Никто и не обижается, тут все-таки идет обсуждение и выдвижение своих вариантов. Что касается дизайна... У нас нет порядка 5к долларов на логотип, а изучив тех кто занимается именно логотипами на самом популярном портале фрилансеров, лично я не пришел в восторг. Дизайном я занимаюсь этим уже более года, в тандеме с очень опытным редактором, которая работала с десятком дизайнеров, правда моя направленность - печатное издание (CMYK - наше все)). Не скажу что я профи, лишь самоучка, как и во всем, кроме экономических наук и английского языка, но кое-что умею. Попробую немного покритиковать, надеюсь никто не обидится. У нас есть продукт - новейший российский хаб-софт, работающий ооочень быстро big_smile.gif Не думаю что нечто старое нам подойдет. Потом делать огромный акцент на страну происхождения тоже не стоит, в глобальных планах - распространение программы по всему миру, а для того чтобы узнавать иконку софта среди сотни-другой в трее (папке, баре, на рабочем столее...) нужна определенная оригинальность. Про то что разработчик из России будет известно всем по пришествию популярности, которая заслуживается качеством продукта. А теперь давайте отвлечемся от всего и взглянем в папку где у вас лежат ярлыки, на рабочий стол, в трей, и посмотрим, что именно Вам приятней и узнаваемей, лично я вижу логотипы Оперы, ФФокса, Хрома, Фотошопа, Индизайна, Иллюстратора, Дримвейвера, Акробата (Адобе не такие уж и простаки чтобы делать такие иконки), Корела, Касперского, Квипа, ЗеБата, Вебмани-кипера, Ворда, Экселя, Птоки, Унхаба, Ноутпада, уТоррента и так далее, вдумайтесь в смысл, что несет в себе иконка, она же логотип... Исходя из этих мыслей, стремящаяся вперед фигурка человечка, она же буква R, вполне удволетворяет требованиям, Wariner, я сам увидел этот "поршень" минут 30 назад, наверно сказывается все-таки увлечение агрегатом "машина") А теперь давайте включать воображение, без него все грустно, уныло, не креативно, допустим поршень, пусть, это движение, мощь, скорость, что угодно. Правда от этого исполнения в уже изменившемся видении логотипа мы ушли. Давайте продолжим обсуждение дабы найти все-таки истину, ведь она где-то рядом big_smile.gif Любая, даже самая бредовая идея будет в плюс, так что смелее! Выкладывайте сочетания цветов, формы, шрифты, что пожелаете... Спасибо за внимание, ваш покорный слуга, N ;)


Вот более старый вариант, может тут кто-то найдет долю интересной идеи.
Saymon21, X-Sky
29.4.2010, 17:02 Логотип для RusHub'а
ваши варианты и предложения
Немного пополнив базу знаний о логотипах и потрудившись в перерывах пару дней получили вот что, оцените big_smile.gif
X-Sky
28.4.2010, 12:51 Antibot
API2 | Скрипт против ботов
Пробуй... Опция в самом начале
Код
local iBlockType = 3    -- Тип блокировки, 1 - блокировать только чат, 2 - приват, 3 - все сразу
*FoxMalder*
28.4.2010, 10:03 Нужен скрипт тотализатор для гонок
Проводим гонки по лок сети ф1
Ты нашел немного не тот скрипт, хорошо, подумаю как сделать все красиво, получится типа скрипта голосований, возможно его и возьму за основу.

А отсылать всем юзерам с определенным префиксом можно вот таким способом:
Код
local tOnlineUsers = Core.GetOnlineUsers()
for _, tUser in ipairs(tOnlineUsers) do
    if tUser.sNick:match "^%[FI4%]" then
        Core.SendToUser("*** Сообщение...")
    end
end
если сам запихнешь в функцию и приделаешь таймер - молодец big_smile.gif
van21
28.4.2010, 8:56 Можно ли банить по мак-адресу?
Птокой это никак не реализуется, вот в русхабе - можно, но красивого скрипта банов так и нет, если перейдешь на русхаб - только скажи, напишу как сделать чтобы забанить твоего "урода".
li4nost

15 страниц V  « < 2 3 4 5 6 > » 
RSS Сейчас: 26.11.2024, 20:05