Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Технические вопросы по PtokaX _ Перенаправление пользователей

Автор: truth 13.11.2010, 17:35

Можно ли перенаправлять пользователей непосредственно с хаба на хаб, без их особого участия? т.е. не закрывать соединение и выдавать причину с ссылкой на другой хаб, а автоматом редиректить?

Просто нужно перенаправлять некоторых пользователей на другой хаб, но они тупые и не смогут по ссылке клацать =\

Автор: Ksan 13.11.2010, 17:41

Можно.
Используй в скрипте этот код:

Код
Core.Redirect(tUser, sAddress, sReason)

Только не у всех юзеров в клиенте стоит галочка "Автоматически идти по адресу перенаправления" (или как-то близко по смыслу)

Автор: Setuper 13.11.2010, 17:44

Перенаправление не является принудительным. В клиенте есть настройка, по которой клиент может следовать перенаправлению автоматически, либо же давать своё разрешение на перенаправление.

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

Автор: truth 13.11.2010, 18:02

Тогда прошу помочь.. накидайте простой скриптик для перенаправление диапазонов IP (с исключениями по инку).
Или может можно переделать вот этот скрипт?
 Hub_for_RangesIP_SafeNicks.lua ( 1.21 килобайт ) : 16


упс.. сейчас сам попробую..

Таааксс.. у всех пользователей клиент FlylinkDC++, да и еще с моими настройками. Сколько раз я перелопачивал настройки.. но что-то не могу найти ничего похожего на "Автоматически идти по адресу перенаправления". Может кто подсказать где эта опция? =\

И пожалуй можете помочь подредактировать скрипт, который я запостил.. убрать вывод сообщения и сразу перекидывать..
Спасибо.

Автор: Ksan 13.11.2010, 18:07

Кстати, в Флайлинке я тоже не нашёл галочку эту. Наверно, решили, что она лишняя (может, перенаправление автоматом сделали без галочек)

Автор: truth 13.11.2010, 18:10

Подправьте пожалуйста скрипт, я проверю (=
Если автоматом не редиректит - пойдем общаться с разработчиками флая big_smile.gif

Автор: Ksan 13.11.2010, 18:55

Попробуй это (назови скрипт, скажем, Redirect.lua). Не стал я переделывать твой скрипт, накропал свой.

Код
local sBot = SetMan.GetString(21)
local sRedirAddr = "dchub://адрес.хаба.ru" -- возможно, нужно и порт указать, если у того хаба порт ограничен одним нестандартным
local sRedurCmd = "!redirect"
local sReasonDef = "В том зале вам удобнее будет сидеть!" -- причина по умолчанию (при пустом окошке причины)
local sRedirMsg = "Юзер перенаправлен по адресу "..sRedirAddr

function UserConnected(tUser)
    local t = ProfMan.GetProfilePermissions(tUser.iProfile)
    if t and t.bRedirect then
        Core.SendToUser(tUser, "$UserCommand 1 2 Перенаправить юзера..$<%[mynick]> "..sRedurCmd.." %[nick] %[line:Причина (либо оставь пустым)]&#*124;")  -- тут в конце звёздочку удалить
    end
end
OpConnected = UserConnected

function ChatArrival(tUser, sData)
    local sData = sData:sub(1,-2)
    local sData = sData:match"%b<>%s(.*)S)"
    local sCmd = sData:match"^(%S+)"
    if sCmd and sCmd == sRedirCmd then
        local t = ProfMan.GetProfilePermissions(tUser.iProfile)
        if t and t.bRedirect then
            local sNick = sData:match"^%S+(%S+)"
            local sReason = sData:match"^%S+%S+%s+(.*)" or sReasonDef
            local tUsr = Core.GetUser(sNick)
            if tUsr then
                Core.SendToUser(tUsr, "<"..sBot.."> "..sReason)
                Core.Redirect(tUsr, sRedirAddr, sReason)
                Core.SendToUser(tUser, sRedirMsg)
            end
        end
        return true
    end
end

Не проверял. Не уверен, что сработает big_smile.gif

Вдогонку кое-что подправил, так что лучше повторить попытку.
Мне не удалось перенаправить. big_smile.gif К тому же команда вылезает в чат. Странно.

Автор: truth 13.11.2010, 19:23

После ввода всего:

Цитата
[18:20:43] <Bot> У вас нет прав для использования этой команды!

О_о

Автор: Ksan 13.11.2010, 19:45

Дык сделай. В профилях поставь галочку на редирект на свой профиль, кто ты там.

А, блин, надо же задействовать функцию

Цитата
OpForceMoveArrival(tUser, sData)
вместо
Цитата
function ChatArrival

Всё равно не получается. :(

PS: Просьба гуру помочь заставить работать как надо вышепоказанный мной код.

Автор: Nickolya 14.11.2010, 8:55

Поправил, там была путаница в именах команд: sRedirCmd и sRedurCmd... Плюс маленькие правки, смотрите уже сами. Еще вместо UserConnected надо бы RegConnected, т.к. у анрега точно нет прав на перенаправление.
В флайлинке все равно вот такая картина:

Цитата
[08:47:45] <PtokaX> В том зале вам удобнее будет сидеть!
[08:47:45] <PtokaX> Вы были перенаправлены на адрес.хаба.ru. Сообщение: В том зале вам удобнее будет сидеть!
[08:47:45] *** Нажмите "Перенаправление" для соединения с адрес.хаба.ru
[08:47:45] *** Отключен

Делают его разработчики что хотят, вырезают, потом возвращают назад настройки, самодурство какое-то.

 Redirector.lua ( 1.25 килобайт ) : 22
 

Автор: Ksan 14.11.2010, 12:35

Вот же я тупень, так элементарно очепятнуться.. :(
Спасибо, Николай!