Версия для печати темы
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 сек.
Автор: Ksan 8.1.2011, 3:10
Эхх, тоже хотел кинуть, смотрю, тут уже успели сразу 2 помочь.
Ай, ладно, чтоб труд не пропал даром, тоже кину своё зёрнышко..
Код
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 помочь.
Киданул бы, если есть уже готовый вариант
Спасибо всем за ответ!!!
Автор: DEN 007 8.1.2011, 15:36
А что идейка хорошая для анрегов, спс
Автор: Ksan 9.1.2011, 19:14
Кстати, любой из вышепредставленных скриптов, если убрать строки
Код
RegConnected = UserConnected
и
Код
RegDisconnected = UserDisconnected
отличное средство против быстрого чата для нерегенных (а рекламщики, как правило, нерегенные) - достаточно просто увеличить срок паузы хотя бы до получаса.
Автор: Nickolya 10.1.2011, 15:57
Ksan, посмотри как это всё сделано в моем скрипте, и не надо обрабатывать вход/выход юзеров + гибкая настройка по профлям
Автор: 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
Зачем одно и то же для каждой функции делать?
Автор: Артём 17.3.2011, 15:34
Accelerator, вопросы к автору скрипта
Автор: Nickolya 17.3.2011, 15:44
Там же есть различность небольшая
UserConnected и ChatArrival одинаковы, а вот в ToArrival идет
Код
Core.SendPmToUser(tUser, sBot,
Автор: Accelerator 17.3.2011, 15:46
Не заметил
Автор: 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 ']'
да мож непоняли друг друга,уберать не получается,регистрируешься и всё равно просит подождать
усё спасибо разгодал секрет))))))