myDC.ru

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

 
История благодарностей участнику Nickolya. Спасибо сказали: 776
Дата поста: В теме: За сообщение: Спасибо сказали:
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
22.4.2010, 9:13 Новая социальная сеть
"Всибири"
Если всего 17 человек, то один может дружить с другими 16, значит теоретически там может быть цифра в 17*16=272, может быть логика такова big_smile.gif
X-Sky
15.4.2010, 9:01 Guess Country ; Страны
API2
Прости меня Тём, это я скосячил. Там где
Код
return ChkGuess(user.sNick)
надо сделать конструкцию вида
Код
local a1 = ChkGuess(user.sNick)
            return a1
без возвращения true

Т.е. получается вот такой код:
Код
    allguess = {function(user,data,cmd)
        if user then
            if not Players[Gc.Bot] then Players[Gc.Bot] = {1,os.time(),GetCn()} end
            if not Tmr then Tmr = TmrMan.AddTimer(1000) end
            local a1 = ChkGuess(Gc.Bot,_,user.sNick)
            return a1, true
        else
            return "Угадайте страну ( всем хабом )",
            "",
            "",
            ""
        end
    end,
    {[-1] = false,[0] = true,[1] = true,[2] = true,[3] = true}
    },
    guess = {function(user,data,cmd,to)
        if user then
            if not Players[user.sNick] then Players[user.sNick] = {1,os.time(),GetCn(),to} end
            if not Tmr then Tmr = TmrMan.AddTimer(1000) end
            local a1 = ChkGuess(user.sNick)
            return a1
        else
            return "Угадайте страну ( сами )",
            "",
            "",
            ""
        end
    end,
    {[-1] = false,[0] = true,[1] = true,[2] = true,[3] = true}
    },
Артём, TiGRpp
14.4.2010, 13:45 Guess Country ; Страны
API2
Хм, у меня такого глюка нету... Попробуй заменить
Код
            return ChkGuess(Gc.Bot,_,user.sNick),true
на
Код
            local a1 = ChkGuess(Gc.Bot,_,user.sNick)
            return a1,true
Артём
12.4.2010, 16:45 От: StatPX
От темы с ID: 1269
Вот, наша любимая библиотека luasocket это позволяет, онлайн справка тут.
evg, Saymon21
12.4.2010, 16:28 NoLimit 1.3
API1, API2 | Скрипт запрета определенных ограничений скорости отдачи
Замените
Код
    local Limit = tCurUser.iLlimit
на
Код
    local Limit = tCurUser.iLlimit or false
    if not Limit then
        return
    end
Артём
10.4.2010, 9:53 BashMySQL
API2 | Цитатник рунета
Cjay, размер скорее всего в байтах, а переподключение к базе делается так: в конец функции OnStartup дописываешь
Код
TmrMan.AddTimer(3600000, "ReConnect")

А в самый конец скрипта вот такую функцию:
Код
function ReConnect()
    con:close()
    con = assert (env:connect(sNameDB, sUserDB, sPasswordDB, sAdressDB, sPortDB))
end
Parad0x
9.4.2010, 8:45 Support
API2 | Комната техподдержки
Это комната технической поддержки, тут пароля для входа нет и, я думаю, никогда не будет, тебе надо воспользоваться каким-нибудь другим скриптом, к примеру этим, но с такой функцией пароля я лично скрипта не видел.
van21
6.4.2010, 12:51 Плагин экзекутора Poddelki.FakeList как отдельный скрипт
Замени chatdata на data
Saymon21, demondroid
4.4.2010, 22:19 CountryStats
API2 | Статистика местоположения пользователей по странам
Да ничего, привет тебе тоже огромный, рады видеть! big_smile.gif Да, база загружается хабом, на сколько я помню, так что перегружать хаб просто необходимо, к твоему сожалению...
Ksan
4.4.2010, 21:48 Плагин экзекутора Poddelki.FakeList как отдельный скрипт
Попробуй big_smile.gif
Saymon21
2.4.2010, 9:16 Registration_1_.v2
API1, API2 | Скрипт регистрации
Если у тебя запущен хаб при этом - проблем быть не должно, проверь это...
Milena
1.4.2010, 19:50 Помогите пожалуйста со скриптом
Скрипты отличались только папками... Но да ладно, вот переделанный. Папка \scripts\MOTDbot должна существовать!
Ольга
1.4.2010, 18:43 Помогите пожалуйста со скриптом
В вашем случае будет достаточно удалить сохранение при входе каждого юзера + заменить функцию сохранения на более оптимальную, держите. Если по-прежнему будет тормозить - пишите.
Ольга
31.3.2010, 11:41 Домены Для Вашего Хаба
Как думаете?
Saymon, добавил на тот же айпи (что и у cheb-p2p.mydc.ru) домен magnet.hub.mydc.ru, старый удалил.
Saymon21
26.3.2010, 10:13 PtokaX не сохраняются баны
сервис/консоль
Вот такой мегаскрипт будет сохранять баны каждую минуту:

Код
iSeconds = 60*1

function OnStartup()
    TmrMan.AddTimer(iSeconds*1000, "Save")
end

function Save()
    BanMan.Save()
end
Enyby
25.3.2010, 12:08 Вопросы по скриптам
Мелкие вопросы
1. Да, дело в этой строке
Код
if tUser.sNick~=sAdminNick then
замени ее на
Код
if not Core.GetUserValue(tUser, 11) then


2. По поводу этого скрипта могу лишь сказать что это скрипт создающий меню в соответствии с правами пользователя, а уже ранговая система это совсем другая область. Так что либо писать скрипт чтобы опы не могли применять команды друг на друга, либо же поговорить с этими раздолбаями и сказать что так делать нельзя.
DrakonSP
25.3.2010, 12:00 Помогите с Talkingbot
Добавь проверку на команду в сообщении, перед
Код
for key in pairs(trigs) do
добавь
Код
        if mess:find("^%s*(%p)") then
            return
        end
CraZy
25.3.2010, 11:35 Kinozal_tv
API2 | Скрипт новостей с трекера
Вполне ожидаемо, пока оно закачает эти 25 мегабайт уйдет вечность, есть у меня задумка сделать отдельную маленькую софтину на luaaio которая будет по запросу как раз и работать с интернетом, в виде отдельной программы которая работает отдельно от хаба. Как вам такая задумка?
ramzes
23.3.2010, 16:39 Kinozal_tv
API2 | Скрипт новостей с трекера
Скрипт конечно по логике туповат т.к. не кеширует запросы юзеров. Я переделал в своем видении немного скрипт, убрал пережитки прошлого апи, и теперь он хранит кеш запроса, за это отвечает настройка
Код
iExpired = 30    -- время в минутах на хранение в кеше ответа от сервера
Попробуйте его, уверен что останетесь довольны big_smile.gif
serrrios, Greeck, ramzes
22.3.2010, 10:05 Переделка скрипта. Help.
В том скрипте что я приложил такой фразы вообще нет, скачай заново и убедись что ты заменил скрипт и выключил старый.
Айпи админа задается в настройке:
Код
local sAdminIp = "127.0.0.1"
В том скрипте что выше отсылать когда админ онлайн нельзя, к этому сообщению прикладываю скрипт без такой проверки. У меня все работает:
Цитата
<HUBABOT> *** Сообщение успешно отправлено!
Адресат получит его при следующем входе на хаб.
Сообщения сам под себя переделай в скрипте...
dinamit
22.3.2010, 9:53 Скрипт, скрывающий ник в чате
Код
tNicks = {
    ["bot1"] = true,
    ["nick2"] = true,
}

function ChatArrival(tUser, sData)
    if tNicks[tUser.sNick] then
        local sMsg = sData:match "^%b<>%s(.*)|$"
        Core.SendToAll(sMsg)
        return true
    end
end


Но возможно что мультичат уйдет в бесконечный цикл повторения своих же сообщений, чтобы этого не случилось надо отправлять сообщение всем на хабе за исключением тех ников что вписаны в таблицу, но для этого надо пробегаться по всей таблице пользователей каждый раз, что на больших хабах будет жутко тормозить. Попробуй пока так...
SAG
21.3.2010, 16:58 Нужен скрипт
Ну как что делать? Открываешь скрипт, там видишь адрес откуда берутся новорсти, теперь надо вписать адрес тех новостей что тебе интересны, к примеру:
Код
http://www.sovsport.ru/sport_rss/2

Теперь переделываем скрипт чтобы было так:
Код
-- Set your feed's URL
local Feed = "http://www.sovsport.ru/sport_rss/2"
и... получаем в чат полностью все новости. С остальными настройками надеюсь разберешься.
jumshut
21.3.2010, 14:56 Помогите !
как это убрать ???
Код
Core.SendToNick(user.sNick,"<"..tSettings.sBot.."> Добро пожаловать на "..(SetMan.GetString(0) or "Неизвестный хаб").." !"); tCommands["lifetime"].fFunction(user)
замени на
Код
tCommands["lifetime"].fFunction(user)


Мог бы и сам хоть раз залезть в код скрипта и глянуть где похожий текст или еще что, учти, терпение тут у всех не железное.
Kocha
20.3.2010, 20:21 CheckPreFix
API2 | контролирует приставку перед ником
Попробовал сделать то что ты хотел...
FallenAngel, Drakula
20.3.2010, 19:51 Добавить функцию
Апи2
Держи, таблица с никами в самом начале скрипта:
Код
tWeSendNicks = {
    "nick1", "Nickolya",
}
FallenAngel, Pro009, мамин_парень
19.3.2010, 14:50 BanMe
API1, API2
Значит птокой не предусмотрены такие баны, в справке так:
Код
BanMan.TempBan(tUser, nTime, sReason, sBy, bFull)    - Temp ban user IP and Nick. nTime is in minutes (0 = default tempban time from settings) ! Return nil when failed, true if success.
т.е. минуты и все, речи о секундах не идет.

Чтобы юзера кикало замени
Код
BanMan.TempBan(tUser, iTime, sReason, sBy, bFull)
на
Код
Core.Disconnect(tUser)
foXDEvil
18.3.2010, 16:57 Помогите !
Есть ли такой скрипт ?
Тебе в этот раздел, а точнее я бы сказал сюда.
Kocha
18.3.2010, 13:30 скрипт регестриции для Dr_Pilulkin™
Я скачал - поставил, регистрирует и правда без вопросов и прочего. Ищите проблему в себе, скрипт выполняет то что вы хотите. А копаться в его содержимом не надо, он ПРИВЕДЕН В БИНАРНЫЙ ВИД, настройки очень тонко правятся в ФАЙЛАХ НАСТРОЙКИ. И поставь notepad++, он хорошо все редактирует, дримвейвер все-таки не для этого сделан.
Dr_Pilulkin™
18.3.2010, 10:31 Hub 3000 Online 100% Загрузки
А на сетевуху ты не хочешь погрешить, к примеру? Если она встроенная или не очень хорошая, может старая, то попробуй заменить на новую нормального качества... И ХР совсем не серверная ОС, может попробовать вин сервер?
Unians
17.3.2010, 22:29 Домены Для Вашего Хаба
Как думаете?
TROJAN, готово big_smile.gif
random name
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

15 страниц V  « < 4 5 6 7 8 > » 
RSS Сейчас: 26.11.2024, 23:00