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

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

MyDC.ru _ Безопасность [PtokaX] _ ChatAfterLoginLocker

Автор: Stym 8.1.2011, 1:35

В голову пришла такая идейка, а что если сделать для юзера небольшую паузу после того как он зашел на хаб, например 10 минут, чтобы стал доступен чат.. Я думаю всякие задротам, которые игнорируют баны надоест ждать некоторое время...
Сам могу только подправить, дописать скрипты, но никак с нуля написать, что то подобное мне к сожалению не попалось на этом хорошем форуме..
Ну или какая нибудь хорошая подсказка мне нужна, типа как вычислить сессию каждого юзера.. или как вписать таймер...

Автор: alex82 8.1.2011, 2:42

Примерно так:

Код
tUsers = {}

function UserConnected(user)
    tUsers[user.sNick] = os.time()
end
RegConnected = UserConnected

function UserDisconnected(user)
    tUsers[user.sNick] = nil
end
RegDisconnected = UserDisconnected

function ChatArrival(user)
    if tUsers[user.sNick] and tUsers[user.sNick] > os.time()-600 then
        Core.SendToUser(user,"<"..SetMan.GetString(21).."> В данный момент Вы не можете отправлять сообщения в чат. Пожалуйста подождите.")
        return true
    end
end

Автор: Nickolya 8.1.2011, 2:48

Название: ChatAfterLoginLocker
Версия: 1.0
Автор: Nickolya
+ в теме еще есть варианты скрипта от Ksan и alex82
Описание: блокирует чат для заданных профилей на N-ное количество времени после входа на хаб.

Собственно весь конфиг скрипта:

Код
-- блокируемые профили и время их блокировки, в секундах:
tLockProfiles = {
    [3] = 3*60,
    [-1] = 10*60,
}


При отправке сообщения в чат, юзер видит работу скрипта в следующем виде:
Цитата
<PtokaX> *** Для того, чтобы общаться в чате, твоему профилю необходимо выждать 10 мин. после входа на хаб. Лично тебе осталось ждать еще 3 мин. 1 сек.


 ChatAfterLoginLocker_v1.0_byNickolya.lua ( 1.08 килобайт ) : 85
 

Автор: Ksan 8.1.2011, 3:10

Эхх, тоже хотел кинуть, смотрю, тут уже успели сразу 2 помочь. big_smile.gif
Ай, ладно, чтоб труд не пропал даром, тоже кину своё зёрнышко..

Код
local iPause = 10*60 -- ожидание в секундах
local tWaitUsers = {}

function UserConnected(tUser)
    tWaitUsers[tUser.sNick] = os.time(os.date("*t")) + iPause
end
RegConnected = UserConnected

function UserDisconnected(tUser)
    tWaitUsers[tUser.sNick] = nil
end
RegDisconnected = UserDisconnected

function ChatArrival(tUser, sData)
    if tWaitUsers[tUser.sNick] then
        if tWaitUsers[tUser.sNick] > os.time(os.date("*t")) then
            Core.SendToNick(tUser.sNick, "<"..SetMan.GetString(21).."> "..tUser.sNick..": Для общения в чате ещё не прошли "..tostring(iPause/60).." мин. с вашего захода на хаб! Погодите малость..")
            return true
        else
            tWaitUsers[tUser.sNick] = nil
        end
    end
end

Автор: Stym 8.1.2011, 3:11

Цитата(Ksan @ 8.1.2011, 4:10) *
Эхх, тоже хотел кинуть, смотрю, тут уже успели сразу 2 помочь. big_smile.gif

Киданул бы, если есть уже готовый вариант big_smile.gif

Спасибо всем за ответ!!!

Автор: DEN 007 8.1.2011, 15:36

А что идейка хорошая для анрегов, спс

Автор: Ksan 9.1.2011, 19:14

Кстати, любой из вышепредставленных скриптов, если убрать строки

Код
RegConnected = UserConnected
и
Код
RegDisconnected = UserDisconnected
отличное средство против быстрого чата для нерегенных (а рекламщики, как правило, нерегенные) - достаточно просто увеличить срок паузы хотя бы до получаса.

Автор: Nickolya 10.1.2011, 15:57

Ksan, посмотри как это всё сделано в моем скрипте, и не надо обрабатывать вход/выход юзеров + гибкая настройка по профлям big_smile.gif

Автор: Ksan 10.1.2011, 16:07

Nickolya, кстати, классное решение! Никогда не обращал внимание на эту переменную - iLoginTime, потому о нём даже не вспомнил..

Автор: Артём 17.3.2011, 15:04

Название: ChatAfterLoginLocker
Версия: 1.1
Автор: Nickolya
Описание: блокирует чат для заданных профилей на N-ное количество времени после входа на хаб. При входе сообщает время 'молчания', по истечению времени сообщает юзеру

Цитата
*** Ваше время ожидание истекло, можете общаться!

 ChatAfterLoginLocker_v1.1_byNickolya.lua ( 2.44 килобайт ) : 22

Автор: Accelerator 17.3.2011, 15:21

Артём, а не лучше сделать так:
Оставляем только функцию UserConnected, а ChatArrival и ToArrival убираем полностью. Вместо этого прописываем:

Код
ChatArrival = UserConnected
ToArrival = UserConnected

Зачем одно и то же для каждой функции делать? big_smile.gif

Автор: Артём 17.3.2011, 15:34

Accelerator, вопросы к автору скрипта big_smile.gif

Автор: Nickolya 17.3.2011, 15:44

Там же есть различность небольшая big_smile.gif
UserConnected и ChatArrival одинаковы, а вот в ToArrival идет

Код
Core.SendPmToUser(tUser, sBot,

Автор: Accelerator 17.3.2011, 15:46

Не заметил big_smile.gif

Автор: Master-Grow 22.5.2011, 13:51

Цитата(Nickolya @ 8.1.2011, 3:48) *
Название: ChatAfterLoginLocker
Версия: 1.0
Автор: Nickolya
+ в теме еще есть варианты скрипта от Ksan и alex82
Описание: блокирует чат для заданных профилей на N-ное количество времени после входа на хаб.

Собственно весь конфиг скрипта:
Код
-- блокируемые профили и время их блокировки, в секундах:
tLockProfiles = {
    [3] = 3*60,
    [-1] = 10*60,
}


При отправке сообщения в чат, юзер видит работу скрипта в следующем виде:


а вот можно сделать переделать этот скрипт ,действовал для незарегистрированых плиззз

Автор: Ksan 22.5.2011, 14:20

Master-Grow, а это для чего, как ты думаешь?

Цитата
[-1] = 10*60,

Если для регистренных не надо, то убери строку (или закомменти):
Цитата
[3] = 3*60,

Автор: Master-Grow 22.5.2011, 17:27

Цитата(Ksan @ 22.5.2011, 15:20) *
Master-Grow, а это для чего, как ты думаешь?

Если для регистренных не надо, то убери строку (или закомменти):


извени я том особ непонимаю вот и вспрашиваю
убрал. хаб\0.4.1.2\scripts\ChatAfterLoginLocker_v1.0_byNickolya.lua:4: unexpected symbol near ']'
да мож непоняли друг друга,уберать не получается,регистрируешься и всё равно просит подождать

усё спасибо разгодал секрет))))))