--[[ [F12P-scripts] *LUA 5.1.3 PX 0.4.1.1 hub fix 05.12.2008 от Foreteller12 Скрипт блокировки главного чата и лички до ввода разблокирующего кода Скрипт блокировки главного чата и лички содержащие запрещённые слова(через редактирвоание скрипта) Скрипт блокировки главного чата и лички по ип/нику(через редактирвоание скрипта) Версия: 1.1 Автор: Foreteller12 18.12.2007 ]]-- --------------------------------------- Конфигурация --------------------------------------- -------------------------------------------------------------------------------------------- BotName = "•ChatGuard•" -- Имя бота BotIsOp = 1 -- Бот будет с ключиком или нет? BotDesc = "ChatGuard" -- Описание бота BotEmail = "http://hub.selfip.com" -- Email бота sVer = "1.1" -- Версия скрипта -- Режим блокировки: Чтоб будем блокировать BlockPM = 1 --Блокировка приватов (0: Не блокировать 1: Блокировать 2: Блокировать приват на каждый ник) BlockMC = 1 --Блокирвока общего чата (0: Не блокировать 1: Блокировать) -- Профили освобождённые от блокировки tNoBlock = { [0] = 1, -- Мастер [1] = 1, -- ОП [2] = 1, -- VIP [3] = 1, -- Зарегистрированный юзер [-1] = 0, -- Незарегистрированный юзер } -- Профили освобождённые от защиты от рекламы tNoBlock2 = { [0] = 1, -- Мастер [1] = 1, -- ОП [2] = 0, -- VIP [3] = 0, -- Зарегистрированный юзер [-1] = 0, -- Незарегистрированный юзер } -- IP в бане для чата и привата tBanIP = { ["10.22.18.82"] = 1, --- локи гг ["127.0.0.1"] = 1, --- локи гг } US={}; tX1 ={ [0]="ноль", [1]="один", [2]="два", [3]="три", [4]="четыре", [5]="пять", [6]="шесть", [7]="семь", [8]="восемь", [9]="девять", [10]="десять", [11]="одиннадцать", [12]="двенадцать", [13]="тринадцать", [14]="четырнадцать", [15]="пятнадцать", [16]="шестнадцать", [17]="семнадцать", [18]="восемнадцать", [19]="девятнадцать", } tX2 ={ [2]="двадцать", [3]="тридцать", [4]="сорок", [5]="пятьдесят", [6]="шестьдесят", [7]="семьдесят", [8]="восемьдесят", [9]="девяносто", } tX3 ={ [1]="сто", [2]="двести", [3]="триста", [4]="четыреста", [5]="пятьсот", [6]="шестьсот", [7]="семьсот", [8]="восемьсот", [9]="девятьсот", } function OnStartup() Core.RegBot(BotName,BotDesc,BotEmail,true); end function UserConnected(sUser) US[sUser.sNick]={}; if tBanIP[sUser.sIP]==1 then Core.SendToNick(sUser.sNick,"<"..Bot.."> ".. "Для вас отключена возможность писать в чате и приватах.") return true else if tNoBlock[sUser.iProfile] ~= 1 then if BlockMC==1 then US[sUser.sNick].MC="0" else US[sUser.sNick].MC="1" end; if BlockPM==1 then US[sUser.sNick].PM="0" else US[sUser.sNick].PM="1" end; local x3=math.random(1,9); local x2=math.random(1,9); local x1=math.random(1,9); local x0=x3*100+x2*10+x1; local st="" st=tX3[x3].." "; if x2==1 then x1=10+x1 else st=st..tX2[x2].." " end; st=st..tX1[x1]; US[sUser.sNick].intn=x0..""; US[sUser.sNick].strn=st; Core.SendToNick(sUser.sNick,"<"..BotName.."> ".. "Для того чтобы писать в чате и приватах, напишите цифрами: "..US[sUser.sNick].strn) else US[sUser.sNick].MC="1"; US[sUser.sNick].PM="1"; end end end OpConnected = UserConnected RegConnected = UserConnected function ChatArrival(sUser, sData) if ( (string.find(sData, "dchub:",1)~=nil) or (string.find(sData, "adc:",1)~=nil) ) then if tNoBlock2[sUser.iProfile] ~= 1 then Core.SendToNick(sUser.sNick,"<"..BotName.."> ".. "Сообщение недоставлено так как оно содержит запрещённые слова.") return true end else if US[sUser.sNick]==nil then US[sUser.sNick]={}; if tNoBlock[sUser.iProfile] ~= 1 then if BlockMC==1 then US[sUser.sNick].MC="0" else US[sUser.sNick].MC="1" end; if BlockPM==1 then US[sUser.sNick].PM="0" else US[sUser.sNick].PM="1" end; local x3=math.random(1,9); local x2=math.random(1,9); local x1=math.random(1,9); local x0=x3*100+x2*10+x1; local st="" st=tX3[x3].." "; if x2==1 then x1=10+x1 else st=st..tX2[x2].." " end; st=st..tX1[x1]; US[sUser.sNick].intn=x0..""; US[sUser.sNick].strn=st; else US[sUser.sNick].MC="1"; US[sUser.sNick].PM="1"; end end local sData = string.sub(sData, 1, -2) local s,e = string.find(sData, "%b<>%s+") local sData = string.sub(sData, e+1, -1) if tBanIP[sUser.sIP]==1 then Core.SendToNick(sUser.sNick,"<"..BotName.."> ".. "Для вас отключена возможность писать в чате и приватах.") return true else if (US[sUser.sNick].MC=="0") then if sData==US[sUser.sNick].intn then US[sUser.sNick].MC="1"; US[sUser.sNick].PM="1"; Core.SendToNick(sUser.sNick,"<"..BotName.."> ".. "Вы правильно ответили (Ответ: "..sData.."), теперь вы можете писать в чате и приватах.") return true else Core.SendToNick(sUser.sNick,"<"..BotName.."> ".. "Для того чтобы писать в чате и приватах, напишите цифрами: "..US[sUser.sNick].strn) return true end end end end end function ToArrival(sUser, sData) if US[sUser.sNick]==nil then US[sUser.sNick]={}; if tNoBlock[sUser.iProfile] ~= 1 then if BlockMC==1 then US[sUser.sNick].MC="0" else US[sUser.sNick].MC="1" end; if BlockPM==1 then US[sUser.sNick].PM="0" else US[sUser.sNick].PM="1" end; local x3=math.random(1,9); local x2=math.random(1,9); local x1=math.random(1,9); local x0=x3*100+x2*10+x1; local st="" st=tX3[x3].." "; if x2==1 then x1=10+x1 else st=st..tX2[x2].." " end; st=st..tX1[x1]; US[sUser.sNick].intn=x0..""; US[sUser.sNick].strn=st; else US[sUser.sNick].MC="1"; US[sUser.sNick].PM="1"; end end local s,e,whoTo,from,arg = string.find(sData,"%$To:%s+(%S+)%s+From:%s+(%S+)%s+(.*)"); arg=string.sub(arg, 2, -2); local s,e = string.find(arg, "%b<>%s+"); arg = string.sub(arg, e+1, -1); if tBanIP[sUser.sIP]==1 then Core.SendToNick(sUser.sNick,"$To: "..sUser.sNick.." From: "..whoTo.." $<"..BotName.."> Приватное сообщение не доставлено"); Core.SendToNick(sUser.sNick,"$To: "..sUser.sNick.." From: "..whoTo.." $<"..BotName.."> Для вас отключена возможность писать в чате и приватах.") return true else if (US[sUser.sNick].PM=="0") then if US[sUser.sNick].intn==arg then US[sUser.sNick].MC="1"; US[sUser.sNick].PM="1"; Core.SendToNick(sUser.sNick,"$To: "..sUser.sNick.." From: "..whoTo.." $<"..BotName.."> Вы правильно ответили (Ответ: "..arg.."), теперь вы можете писать в чате и приватах.") return true else Core.SendToNick(sUser.sNick,"$To: "..sUser.sNick.." From: "..whoTo.." $<"..BotName.."> Приватное сообщение не доставлено"); Core.SendToNick(sUser.sNick,"$To: "..sUser.sNick.." From: "..whoTo.." $<"..BotName.."> Для того чтобы писать в чате и приватах, напишите цифрами: "..US[sUser.sNick].strn) return true end end end end function OnExit(sUser) US[sUser.sNick]={}; end;