myDC.ru

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

 
3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему

> Переделка скриптов, Прошу помощи

Теги
Нет тегов для показа
Fe(one)X
сообщение 11.8.2011, 0:40
Сообщение #1


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 6.2.2010
Из: Россия, г. Волжский
Пользователь №: 5 963
Спасибо сказали: 0 раз




Всем привет. Прошу помочь мне с двумя скриптами, т. к. сам я не силён в этом деле.
В общем имеется на хабе 2 скрипта, первый показывает время в чате по запросу пользователя, второй блокирует рекламу с хабами. Сделать нужно следующее:
Раскрыть!
sBot = SetMan.GetString(21)

RutSubs={ -- Описания раннего утра
[1] = "Спать ещё надо)",
[2] = "На работу проснулись?)",
[3] = "Раннее утро.",
[4] = "Петухи поют за окном)",
[5] = "В школу пора?)",
[6] = "Солнце встаёт)",
}

UtrSubs={ -- Описания утра
[1] = "Утро.",
[2] = "Утро на дворе)",
[3] = "Школота учится)",
[4] = "Скоро день)",
[5] = "Утро за окном.",
[6] = "На работу пора, чё в DC сидим?)",
}

DaySubs={ -- Описания дня
[1] = "День)",
[2] = "Сейчас день.",
[3] = "Светлое время суток.",
[4] = "Город как большой муравейник)",
[5] = "Работа в городе кипит)",
}

SkveSubs={ -- Описания предвечернего времени суток
[1] = "Скоро вечер.",
[2] = "Люди возращаются с работы.",
[3] = "Час пик в автобусах)",
[4] = "Заканчивается рабочий день...",
[5] = "Наступает вечер.",
}

VeSubs={ -- Описания вечера
[1] = "Вечер.",
[2] = "Молодёжь гуляет по паркам)",
[3] = "Город зажигает фонари...)",
[4] = "Рабочий день закончен!",
[5] = "Затихает городская суета...",
}

PozdveSubs={ -- Описания позднего вечера
[1] = "Поздний вечер)",
[2] = "Спокойной ночи малыши уже кончились big_smile1.gif",
[3] = "Спать пора)",
[4] = "Идущим спать, спокойной ночи)",
[5] = "Город постепенно засыпает...",
[6] = "Скоро ночь)",
}

NoSubs={ -- Описания ночи
[1] = "Чё не спим?)",
[2] = "Ночь, бегом спать!)",
[3] = "Не спится?)",
[4] = "Ночь.",
[5] = "Тёмное время суток.",
[6] = "Бессонница?)",
[7] = "Тёёёёёмная ночь.....",
[8] = "Шо не спим, хлопчик?big_smile1.gif",
}

function ChatArrival(tUser, sData)
local cmd = sData:match"%b<>%s+(%S+).*|"
if cmd == "!сегодня" or cmd == "!date" or cmd == "!дата" or cmd == "!today" then
local iHour, sMsg = tonumber(os.date"%H"), " Точное время "..os.date("%X").." "
if iHour >= 4 and iHour < 7 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. RutSubs[math.random(#RutSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 7 and iHour < 12 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. UtrSubs[math.random(#UtrSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 12 and iHour < 17 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. DaySubs[math.random(#DaySubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 17 and iHour < 18 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. SkveSubs[math.random(#SkveSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 18 and iHour <= 22 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. VeSubs[math.random(#VeSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 22 and iHour <= 24 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. PozdveSubs[math.random(#PozdveSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 00 and iHour <= 4 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. NoSubs[math.random(#NoSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
end
return true
end
end
function UserConnected(tUser)
Core.SendToUser(tUser,"$UserCommand 1 3 Ресурсы\\Время\\Сегодня...$<%[mynick]> !дата|")
end
RegConnected,OpConnected=UserConnected,UserConnected

Нужно чтобы в топике хаба отображалось время с датой. Как это сделать в данном скрипте?

И здесь:
Раскрыть!
--[[
Скрипт антирекламы 1.1 на основе скрипта ChatFilter V1.02 by KoYoT
Совместимость: ptokax 0.4.0.0, lua 5.13
by [fwx]Diver
Переделано и дополнено [VHZ]ZmuriK
]]--

sBot = "Антиреклама" -- имя бота
BotReg = 0 --показывать бота в списке пользователей
BanMode = 1
-- 0 - перманентный бан по нику и IP
-- 1 - временный бан по нику и IP. время задается в BanTime
-- 2 - кик
-- 3 - только предупреждение

BanTime = 120 -- время бана в минутах, для режима 1
UserSay = 0 -- заменять фразу с рекламой на случайное выражение из MessageToAll

text = "\r\n\t\tПредупреждение: Вы нарушили правилa хаба и будете забанены, если продолжите испытывать терпение администрации хаба.\r\nЕсли вы открыли свой хаб - это, конечно, просто замечательно. Но то, что вы своими сообщениями об этом пытаетесь изнасиловать мозг всех посетителей хаба одновременно - это уже перебор. Нужно заявить миру о своём детище, пишите на форумах. Если кто-то попросил дать ссылку - добро пожаловать к нему в приват."
text_to_op = " пытался сообщить в общий чат следующую фразу:"
sByByText = "Вы были забанены за рекламу!"
sReason = "Нарушение правил хаба. Реклама ресурсов запрещена!"

-- Кого нужно проверять (1 - да, 0 - нет) --
CanDo = {
[-1] = 1, -- Незарегестрированный
[0] = 0, -- Мастер
[1] = 0, -- ОП
[2] = 1, -- Вип
[3] = 1, -- Зарегестрированный
[4] = 1, -- Модератор
}

-- Что запрещаем
adverTable = {
"dchub","DCHUB","DChub","DcHub","DchUb",
"DchuB","dCHub","dChUb","dChuB","dcHUb",
"dcHuB","dchUB","DCHub","DChUb","DChuB",
"DcHUb","DchUB","dCHUb","dCHuB","dChUB",
"dcHUB","DCHUb","DCHuB","DChUB","DcHUB",
"dCHUB","adc","d c h u b://","dchub://",
"d*c*h*u*b://","d-c-h-u-b://","d/c/h/u/b://",
"d`c`h`u`b://","d!c!h!u!b://","d@c@h@u@b://",
"d#c#h#u#b://","d$c$h$u$b://","d%c%h%u%b://",
"d^c^h^u^b://","d&c&h&u&b://","d(c(h(u(b://",
"d)c)h)u)b://","d_c_h_u_b://","d=c=h=u=b://","d+c+h+u+b://",
"d\c\h\u\b://","d?c?h?u?b://","d.c.h.u.b://",
"d>c>h>u>b://","d,c,h,u,b://","d<c<h<u<b://",
"d~c~h~u~b://","d№c№h№u№b://","d;c;h;u;b://",
"d:c:h:u:b://","d|c|h|u|b://","d]c]h]u]b://",
"d[c[h[u[b://","d{c{h{u{b://","d}c}h}u}b://",
"adc","Adc","aDc","adC","ADc","aDC","AdC",
"a d c://","adc://","a*d*cb://","a-d-c://",
"a/d/c://","a`d`c://","a!d!c://","a@d@c://",
"a#d#c://","a$d$c://","a%d%c://","a^d^c://",
"a&d&c://","a(d(c://","a)d)c://","a_d_c://",
"a=d=c://","a+d+c://","a\d\c://","a?d?c://",
"a.d.c://","a>d>c://","a,d,c://","a<d<c://",
"a~d~c://","a№d№c://","a;d;c://","a:d:c://",
"a/d/c://","a|d|c://","a]d]c://","a[d[c://",
"a{d{c://","a}d}c://","a d c://"," adc://",
"f-h.sytes.net",
}

-- Что разрешаем
safeTable = {
"dchub://vlz.e-telecom.ru","dchub://10.50.48.12","dchub://vlz.sytes.net",
}

MessageToAll = {
"Народ, кто хочет выпить пива? Угощаю.",
"У меня сегодня праздник! Проставляюсь всем!",
"Постучите мне по голове, чтобы я проснулся.",
"Ау, где я?",
"Народ. Ау. Где я?",
"Что здесь происходит?",
"Больше так пить не буду.",
"Хочу быть взрослым.",
"Хочу быть умным.",
"Почему у меня усы не растут?",
"На какую кнопку нужно нажимать чтобы выключить комп?",
"абыРвалГ",
"Народ. Какое сегодня число?",
"Народ. Какой сегодня месяц?",
"Не понял.",
"Мои мысли, мои скакуны.",
"Раздолбай я, раздолбай.",
"Пора менять клавиатуру.",
}

------------------------------[ Code Section ]------------------------------
function OnStartup()
if BotReg == 1 then
Core.RegBot(sBot, "", "", true)
end
PhrasLen = table.maxn(MessageToAll)
end

function ChatArrival(tUser,sData)
if CanDo[tUser.iProfile] == 0 then
return false
end
local s,e,msg = string.find(sData,"%b<>%s(.*)")
if checkForAdvertising(msg) then
if checkForSafe(msg) then
return false
end
Core.SendPmToOps(sBot, "*** "..tUser.sNick.." "..text_to_op.." "..msg)
if UserSay == 1 then
Core.SendToAll("<"..tUser.sNick.."> "..MessageToAll[math.random(PhrasLen)])
end
if BanMode == 0 then
Core.SendToUser(tUser,"<"..sBot.."> "..sByByText)
BanMan.Ban(tUser,sReason,sBot,true)
end
if BanMode == 1 then
Core.SendToUser(tUser,"<"..sBot.."> "..sByByText)
BanMan.TempBan(tUser,BanTime,sReason,sBot,true)
end
if BanMode == 2 then
Core.SendToUser(tUser,"<"..sBot.."> "..sByByText)
Core.Kick(tUser,sBot,sReason)
end
if BanMode == 3 then
Core.SendToUser(tUser,"<"..sBot.."> *** "..text)
end
collectgarbage("collect")
return true
end
end

function ToArrival(tUser,sData)
if CanDo[tUser.iProfile] == 0 then
return false
end
local s,e,msg = string.find(sData,"%b<>%s(.*)")
if checkForAdvertising(msg) then
if checkForSafe(msg) then
return false
end
Core.SendPmToOps(sBot, "*** "..tUser.sNick.." "..text_to_op.." "..msg)
if UserSay == 1 then
Core.SendToAll("<"..tUser.sNick.."> "..MessageToAll[math.random(PhrasLen)])
end
if BanMode == 0 then
Core.SendToUser(tUser,"<"..sBot.."> "..sByByText)
BanMan.Ban(tUser,sReason,sBot,true)
end
if BanMode == 1 then
Core.SendToUser(tUser,"<"..sBot.."> "..sByByText)
BanMan.TempBan(tUser,BanTime,sReason,sBot,true)
end
if BanMode == 2 then
Core.SendToUser(tUser,"<"..sBot.."> "..sByByText)
Core.Kick(tUser,sBot,sReason)
end
if BanMode == 3 then
Core.SendToUser(tUser,"<"..sBot.."> *** "..text)
end
collectgarbage("collect")
return true
end
end

function checkForAdvertising(msg)
for _,v in ipairs(adverTable) do
if string.find(msg, v) then
return true
end
end
return false
end

function checkForSafe(msg)
for _,v in ipairs(safeTable) do
if string.find(msg, v) then
return true
end
end
return false
end

Не работает вот это:
-- Что разрешаем
safeTable = {
"dchub://vlz.e-telecom.ru","dchub://10.50.48.12","dchub://vlz.sytes.net",
}

Т. е. если писать эти адреса в чате, то они тоже блокируются, хотя не должны. Где ошибка?

Надеюсь на Вашу помощь. Заранее спасибо.
Go to the top of the page
+Quote Post
Damaks
сообщение 11.8.2011, 7:38
Сообщение #2


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 260
Регистрация: 1.6.2010
Пользователь №: 6 968
Спасибо сказали: 83 раза




Цитата(Fe(one)X @ 11.8.2011, 1:40) *
Не работает вот это:
-- Что разрешаем
safeTable = {
"dchub://vlz.e-telecom.ru","dchub://10.50.48.12","dchub://vlz.sytes.net",
}

Т. е. если писать эти адреса в чате, то они тоже блокируются, хотя не должны. Где ошибка?

Всё работает, исключения не подпадают под запрет и проходят в чат.

Кстати, в этом скрипте есть лазейка: если ввести в чат фразу, содержащую и запрет, и исключение, например
Цитата
Заходите на Пупкин-ХАБ! . . . . . dchub://pupkinhub.ru . . . . . (рекомендует администрация dchub://vlz.sytes.net)

то она пройдёт в чат без фильтрации big_smile.gif
Go to the top of the page
+Quote Post
Alexey
сообщение 11.8.2011, 7:47
Сообщение #3


7 квадратиков
*******

Группа: Модераторы
Сообщений: 792
Регистрация: 21.1.2009
Пользователь №: 1 895
Спасибо сказали: 300 раз




[offtop]
Делаем ставки, господа, через сколько постов Дамакс кинет ссылку на свой скрипт? ))
[/offtop]
Go to the top of the page
+Quote Post
Damaks
сообщение 11.8.2011, 8:18
Сообщение #4


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 260
Регистрация: 1.6.2010
Пользователь №: 6 968
Спасибо сказали: 83 раза




Цитата(Alexey @ 11.8.2011, 8:47) *
[offtop]
Делаем ставки, господа, через сколько постов Дамакс кинет ссылку на свой скрипт? ))
[/offtop]

По многочисленным просьбам трудящихся: Антиреклама для PtokaX
Хороший скрипт не грех порекомендовать victory.gif
Go to the top of the page
+Quote Post
Fe(one)X
сообщение 11.8.2011, 13:03
Сообщение #5


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 6.2.2010
Из: Россия, г. Волжский
Пользователь №: 5 963
Спасибо сказали: 0 раз




Цитата(Damaks @ 11.8.2011, 8:38) *
Всё работает, исключения не подпадают под запрет и проходят в чат.

Так должно быть, но если я пишу адрес хаба из списка исключений, то всё равно даётся бан. Видимо где-то в самом коде ошибка, вот только где?
Go to the top of the page
+Quote Post
Damaks
сообщение 11.8.2011, 15:50
Сообщение #6


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 260
Регистрация: 1.6.2010
Пользователь №: 6 968
Спасибо сказали: 83 раза




Fe(one)X
В исключениях нужно экранировать символы ( ) . % + - * ? [ ] ^ $
Для этого перед ними нужно поставить символ % (например dchub://vlz%.e%-telecom%.ru)


Спасибо сказали:
Go to the top of the page
+Quote Post
Fe(one)X
сообщение 11.8.2011, 18:52
Сообщение #7


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 6.2.2010
Из: Россия, г. Волжский
Пользователь №: 5 963
Спасибо сказали: 0 раз




Цитата(Damaks @ 11.8.2011, 16:50) *
Fe(one)X
В исключениях нужно экранировать символы ( ) . % + - * ? [ ] ^ $
Для этого перед ними нужно поставить символ % (например dchub://vlz%.e%-telecom%.ru)

Спасибо, помогло. ;-)

ЗЫ: А со скриптом времени поможете?
Go to the top of the page
+Quote Post
Damaks
сообщение 11.8.2011, 20:25
Сообщение #8


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 260
Регистрация: 1.6.2010
Пользователь №: 6 968
Спасибо сказали: 83 раза




Вставляешь в конце скрипта:

Раскрывающийся текст
Код
function OnStartup()
    tmr = TmrMan.AddTimer (60*60000)    -- проверка и смена топика каждые 60 минут
end

function OnTimer(tmr)
    local iHour = tonumber(os.date"%H")
    if iHour >= 4 and iHour < 7 then
        SetMan.SetString(10, RutSubs[math.random(#RutSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X"))
    elseif iHour >= 7 and iHour < 12 then
        SetMan.SetString(10, UtrSubs[math.random(#UtrSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X"))
    elseif iHour >= 12 and iHour < 17 then
        SetMan.SetString(10, DaySubs[math.random(#DaySubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X"))
    elseif iHour >= 17 and iHour < 18 then
        SetMan.SetString(10, SkveSubs[math.random(#SkveSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X"))
    elseif iHour >= 18 and iHour <= 22 then
        SetMan.SetString(10, VeSubs[math.random(#VeSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X"))
    elseif iHour >= 22 and iHour <= 24 then
        SetMan.SetString(10, PozdveSubs[math.random(#PozdveSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X"))
    elseif iHour >= 00 and iHour <= 4 then
        SetMan.SetString(10, NoSubs[math.random(#NoSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X"))
    end
    return true
end

Запускаешь скрипт в ровное время (9.00, 10.00, 11.00 и т.д.).
Смена топика произойдёт через час после запуска. Можешь изменить время.


Спасибо сказали:
Go to the top of the page
+Quote Post
Fe(one)X
сообщение 23.8.2011, 21:21
Сообщение #9


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 6.2.2010
Из: Россия, г. Волжский
Пользователь №: 5 963
Спасибо сказали: 0 раз




Damaks, спасибо конечно, но это немного нето. Дело в том, что у меня на хабе стоит скрипт Автотопик, который автоматически меняет топик каждые 20 секунд. Так вот можно сделать так, чтобы время отображалось рядом с топиком? Или сделать так чтобы время отображалось в автотопике? Заранее спасибо.

И ещё:
Раскрыть!

-- This script is converted with PtokaX LUA API Converter v0.9 at 10/17/08 09:10:38
--------------------------------------------------------------------
-- ChatFilter V1.02 by KoYoT
-- Скрипт на блокировку рекламы хабов, мат и прочего.
-- Безобидно отучает пользователей от злоупотребления терпением администратора хаба.
--------------------------------------------------------------------

-- Эти фразы будут заменять не прошедшие цензуру строки
-- Можно добавлять без ограничений
Phrases = {
[1] = "Реклама на хабе запрещена - Читай правила !rules",
[2] = "Реклама на хабе запрещена - Наш сайт http://vlz.e-telecom.ru",
}
local tProfiles = {
[0] = 0, -- Мастер
[1] = 0, -- ОПератор
[2] = 0, -- VIP
[3] = 1, -- Зарегистрированный пользователь
[-1] = 1, -- Незарегистрированный пользователь
}
-- Ключевые буквосочетания, по которым вводим цензуру (добавляем сами под конкретные нужды)
-- Чем их больше, тем больше нагрузка на процессор
Filter = {
[1] = "http",
[2] = "ftp",
[3] = "www",
[4] = "%d+%.%d+%.%d+%.%d+",
[5] = "%d+%,%d+%,%d+%,%d+",
[6] = "%d+%-%d+%-%d+%-%d+",
[7] = "%d+% %d+% %d+% %d+",
[8] = "%d+%_%d+%_%d+%_%d+",



}
PhrasLen = #Phrases
FilterLen = #Filter

-----------------------------------------------
function ChatArrival(curUser,data)
if tProfiles[curUser.iProfile] == 1 then
Core.GetUserAllData(curUser)
local _,_,sdata = string.find( data, "^%b<>%s(.*)$")
if sdata then
sdata = StringLower(sdata)
for i = 1, FilterLen do
if string.find( sdata, Filter[i]) then
Core.SendToAll("<"..curUser.sNick.."> ".. Phrases[math.random(PhrasLen)])
return true
end
end
end
end
end

-----------------------------------------------
function StringLower(arg) -- Приводим текстовую строку в нижний регистр
local res = ""
local Byte, Len = nil, string.len(arg)
arg = string.lower(arg)
for i = 1, Len do
Byte = string.byte(arg, i)
if (Byte >= 192) and (Byte < 224) then
Byte = Byte + 32
end
if (Byte == 168) or (Byte == 184) then Byte = 229 end -- убираем проблему с Ё
res = res..string.char(Byte)
end
return res
end
-----------------------------------------------


Помогите кто-нибудь сделать в этом скрипте таблицу исключений для заданных адресов. Увы времени разобраться самому категорически не хватает, т. к. помимо хаба ещё сайт, радиопроект и прочее, а также личная жизнь...
В общем заранее спасибо за помощь.
Go to the top of the page
+Quote Post
Ksan
сообщение 24.8.2011, 0:52
Сообщение #10


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 718
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 652 раза




Цитата(Fe(one)X @ 24.8.2011, 1:21) *
...Увы времени разобраться самому категорически не хватает, т. к. помимо хаба ещё ....

Думаешь, остальные занимаются только скриптами и им за это платят деньги? У всех есть другие дела, и может, поболее твоих.
Думаю, если сильно надо, разберешься, тем более исключения делать - раз плюнуть, примеров исключений море во множестве скриптов!
Извините..
Go to the top of the page
+Quote Post
Damaks
сообщение 24.8.2011, 13:27
Сообщение #11


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 260
Регистрация: 1.6.2010
Пользователь №: 6 968
Спасибо сказали: 83 раза




Цитата(Fe(one)X @ 23.8.2011, 22:21) *
Так вот можно сделать так, чтобы время отображалось рядом с топиком?

Оно уже отображается рядом с топиком, после фразы "Московское время:".
Go to the top of the page
+Quote Post
Fe(one)X
сообщение 26.8.2011, 19:08
Сообщение #12


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 6.2.2010
Из: Россия, г. Волжский
Пользователь №: 5 963
Спасибо сказали: 0 раз




Цитата(Ksan @ 24.8.2011, 1:52) *
Думаешь, остальные занимаются только скриптами и им за это платят деньги? У всех есть другие дела, и может, поболее твоих.
Думаю, если сильно надо, разберешься, тем более исключения делать - раз плюнуть, примеров исключений море во множестве скриптов!
Извините..

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

Вот к примеру попробовал с другого скрипта прикрутить таблицу исключений к этому, но в итоге ничего не работает:
Раскрыть!

-- This script is converted with PtokaX LUA API Converter v0.9 at 10/17/08 09:10:38
--------------------------------------------------------------------
-- ChatFilter V1.02 by KoYoT
-- Скрипт на блокировку рекламы хабов, мат и прочего.
-- Безобидно отучает пользователей от злоупотребления терпением администратора хаба.
--------------------------------------------------------------------

-- Эти фразы будут заменять не прошедшие цензуру строки
-- Можно добавлять без ограничений
Phrases = {
[1] = "Реклама на хабе запрещена - Читай правила !rules",
[2] = "Реклама на хабе запрещена - Наш сайт http://vlz.e-telecom.ru",
}
local tProfiles = {
[0] = 0, -- Мастер
[1] = 0, -- ОПератор
[2] = 0, -- VIP
[3] = 1, -- Зарегистрированный пользователь
[-1] = 1, -- Незарегистрированный пользователь
}
-- Что разрешаем
safeTable = {
"http://vlz.e-telecom.ru","http://vlz.sytes.net",
}
-- Ключевые буквосочетания, по которым вводим цензуру (добавляем сами под конкретные нужды)
-- Чем их больше, тем больше нагрузка на процессор
Filter = {
[1] = "http",
[2] = "ftp",
[3] = "www",
[4] = "%d+%.%d+%.%d+%.%d+",
[5] = "%d+%,%d+%,%d+%,%d+",
[6] = "%d+%-%d+%-%d+%-%d+",
[7] = "%d+% %d+% %d+% %d+",
[8] = "%d+%_%d+%_%d+%_%d+",



}
PhrasLen = #Phrases
FilterLen = #Filter

-----------------------------------------------
function ChatArrival(curUser,data)
if tProfiles[curUser.iProfile] == 1 then
Core.GetUserAllData(curUser)
local _,_,sdata = string.find( data, "^%b<>%s(.*)$")
if sdata then
sdata = StringLower(sdata)
for i = 1, FilterLen do
if string.find( sdata, Filter[i]) then
Core.SendToAll("<"..curUser.sNick.."> ".. Phrases[math.random(PhrasLen)])
return true
end
end
end
end
end

-----------------------------------------------
function StringLower(arg) -- Приводим текстовую строку в нижний регистр
local res = ""
local Byte, Len = nil, string.len(arg)
arg = string.lower(arg)
for i = 1, Len do
Byte = string.byte(arg, i)
if (Byte >= 192) and (Byte < 224) then
Byte = Byte + 32
end
if (Byte == 168) or (Byte == 184) then Byte = 229 end -- убираем проблему с Ё
res = res..string.char(Byte)
end
return res
end
-----------------------------------------------
function checkForSafe(msg)
for _,v in ipairs(safeTable) do
if string.find(msg, v) then
return true
end
end
return false
end

Где я допустил ошибку? Если написать адрес из таблицы исключений, то адрес блокируется. % пробовал ставить, но не помогло.

Damaks, я уже понимаю, что порядком надоел, но со временем в топике так ничего и не выходит. Я вот попробовал поэкспериментировать с кодом времени в скрипте Автотопик, но опять же ничего не получилось. В общем думаю сделать вот как:
Раскрыть!

local sBot = SetMan.GetString(21)
local iTimer = 20
local sTopic = Core.GetPtokaXPath().."scripts/Topic/topic.dat"
tTopic = {}

function OnStartup()
if loadfile(sTopic) then
dofile(sTopic)
end
TmrMan.AddTimer(iTimer*1000)
end

function OnTimer()
if tTopic ~= {} then
SetMan.SetString(10,tTopic[math.random(1,table.maxn(tTopic))]:sub(1,256))
end
end

function OpConnected(tUser)
if tUser.iProfile == 0 then
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Админцентр\\Топики хаба\\Добавить топик$<%[mynick]> !topic_add %[line:добавить топик]|")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Админцентр\\Топики хаба\\Просмотреть все топики$<%[mynick]> !topic_view|")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Админцентр\\Топики хаба\\Удалить топик$<%[mynick]> !topic_del %[line:введите номер топика]|")
end
end

function ChatArrival(tUser, sData)
local data = string.sub(sData, 1, -2)
local _, _, cmd = string.find(data, "%b<>%s+(%S+)")
if tUser.iProfile == 0 then
if cmd == "!topic_add" then
local _, _, msg = string.find(data, cmd.."(.*)")
if not msg then
Core.SendToUser(tUser, "<"..sBot.."> Вы не ввели топик!")
else
tTopic[table.maxn(tTopic)+1] = msg
WriteTable(tTopic, " tTopic", sTopic)
Core.SendToUser(tUser, "<"..sBot.."> Топик успешно добавлен!")
end
return true
end
if cmd == "!topic_view" then
local msg = "Топики для автосмены:"
for i,v in pairs(tTopic) do
msg = msg.."\r\n\r\n\t ["..i.."] "..v
end
if msg == "Топики для автосмены:" then
Core.SendToUser(tUser, "<"..sBot.."> Нет топиков!")
else
Core.SendToUser(tUser, "<"..sBot.."> "..msg)
end
return true
end
if cmd == "!topic_del" then
local _, _, iNumb = string.find(data, "%b<>%s+%S+%s+(%d+)")
if not iNumb then
Core.SendToUser(tUser, "<"..sBot.."> Вы не ввели номер топика!")
else
if not tTopic[tonumber(iNumb)] then
Core.SendToUser(tUser, "<"..sBot.."> Топика с таким номером не существует!")
else
table.remove (tTopic, tonumber(iNumb))
WriteTable(tTopic, " tTopic", sTopic)
Core.SendToUser(tUser, "<"..sBot.."> Топик удачно удалён!")
end
end
return true
end
end
end

function WriteTable(tTable, tablename, file)
local handle = io.open(file, "w")
Serialize(tTable, tablename, handle)
handle:close()
end

function Serialize(tTable, sTableName, hFile, sTab)
sTab = sTab or "";
hFile: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, hFile, sTab.."\t");
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
hFile:write(sTab.."\t"..sKey.." = "..sValue);
end
hFile:write(",\n");
end
hFile:write(sTab.."}");
end

Имеется скрипт Автотопик, который содержит следующий набор топиков:
Раскрыть!

tTopic = {
[1] = "Неофициальный хаб сети «Евротелеком»",
[2] = "Приятного общения!",
[3] = "Спасибо, что Вы с нами!",
[4] = "Главный хаб города Волжского!",
[5] = "Будьте с нами и зовите всех сюда!",
[6] = "Добавляйте в избранные командой /fav",
[7] = "1,5 года успешной работы!",
}

Топики хранятся в файле topic.dat
Идея состоит в следующем, что если в конце топика написать к примеру os.date("%X"), то это понималось как время и приписывалось в конец топика, т. е. выглядеть это в файле должно вот как: Добавляйте в избранные командой /fav os.date("%X") или на хабе так: Добавляйте в избранные командой /fav 12:34:05
Как это реализовать?
С кодом экспериментировал вот с этим:
Раскрыть!

function ChatArrival(tUser, sData)
local cmd = sData:match"%b<>%s+(%S+).*|"
if cmd == "!сегодня" or cmd == "!date" or cmd == "!дата" or cmd == "!today" then
local iHour, sMsg = tonumber(os.date"%H"), " Точное время "..os.date("%X").." "
if iHour >= 4 and iHour < 7 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. RutSubs[math.random(#RutSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 7 and iHour < 12 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. UtrSubs[math.random(#UtrSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 12 and iHour < 17 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. DaySubs[math.random(#DaySubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 17 and iHour < 18 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. SkveSubs[math.random(#SkveSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 18 and iHour <= 22 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. VeSubs[math.random(#VeSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 22 and iHour <= 24 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. PozdveSubs[math.random(#PozdveSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
elseif iHour >= 00 and iHour <= 4 then
Core.SendToAll("<"..sBot.."> *** "..tUser.sNick..", ".. NoSubs[math.random(#NoSubs)].." Сегодня: "..os.date("%d.%m.%Y").." Московское время: "..os.date("%X").."")
end
return true
end
end

Надеюсь, что понятно объяснил.
Ребят помогите пожалуйста, буду очень Вам благодарен за помощь.

ЗЫ: Damaks, про список хабов нашей области помню, как будет время составлю и передам тебе.
Go to the top of the page
+Quote Post
Ksan
сообщение 26.8.2011, 20:57
Сообщение #13


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 718
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 652 раза




Fe(one)X, в скрипте отправки топика измени одну строку так:
Код
function OnTimer()
    if tTopic ~= {} then
        SetMan.SetString(10,tTopic[math.random(1,table.maxn(tTopic))]:sub(1,256).." Время: "..os.date("%X"))  -- изменённая строка*
    end
end

И будет выводить твои топики + текущее время (но только на момент отправки, потом до следующего топика время будет висеть одно и то же). Может, лучше хотя бы без секунд? Тогда время в топике будет более корректно выглядеть.
Если без секунд, то строка должна выглядет так:
Код
        SetMan.SetString(10,tTopic[math.random(1,table.maxn(tTopic))]:sub(1,256).." Время: "..os.date("%H:%M"))  --  изменённая строка*


Спасибо сказали:
Go to the top of the page
+Quote Post
Fe(one)X
сообщение 30.8.2011, 23:17
Сообщение #14


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 6.2.2010
Из: Россия, г. Волжский
Пользователь №: 5 963
Спасибо сказали: 0 раз




Ksan, спасибо огромное. Работает на ура.
А в скрипте антирекламы можешь подсказать где я допустил ошибку?
Go to the top of the page
+Quote Post
Ksan
сообщение 31.8.2011, 0:39
Сообщение #15


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 718
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 652 раза




Fe(one)X, функцию function checkForSafe(msg) ты написал, но нет обращения к ней, то есть, у тебя нет проверки вхождения выражения из таблицы исключений в сообщение юзера.
Короче, надо вместо строки
Код
        if sdata then
написать так
Код
        if sdata and not checkForSafe(sdata) then



Спасибо сказали:
Go to the top of the page
+Quote Post
Fe(one)X
сообщение 1.9.2011, 0:30
Сообщение #16


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 6.2.2010
Из: Россия, г. Волжский
Пользователь №: 5 963
Спасибо сказали: 0 раз




Ksan, всё работает, спасибо тебе огромнейшее.

Собственно это всё что мне требовалось, тему можно закрывать, ещё раз всем спасибо.
Go to the top of the page
+Quote Post
Marc
сообщение 1.9.2011, 5:07
Сообщение #17


Активный участник
***

Группа: Пользователи
Сообщений: 93
Регистрация: 25.1.2010
Пользователь №: 5 828
Спасибо сказали: 4 раза




Вот не знаю, как у вас, а у меня есть вопросы к автотопику:

-скрипт работает сам при запуске, время отображается, топик меняется, но

1. из меню команда на просмотр списка не работает у меня почему-то, хотя в осн чат и поступает
2. удаление номера топика также не происходит, хотя команда в чат проходит
3. тоже самое и с добавлением нового номера топика

двигать в разные места пробовал...
Подскажите, может, что не так делаю!

ps. Просьба к Fe(one)X прикрепить сюда готовый скрипт тогда для АPI 2
Go to the top of the page
+Quote Post
Fe(one)X
сообщение 21.12.2011, 2:05
Сообщение #18


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 6.2.2010
Из: Россия, г. Волжский
Пользователь №: 5 963
Спасибо сказали: 0 раз




Цитата(Marc @ 1.9.2011, 6:07) *
Вот не знаю, как у вас, а у меня есть вопросы к автотопику:

-скрипт работает сам при запуске, время отображается, топик меняется, но

1. из меню команда на просмотр списка не работает у меня почему-то, хотя в осн чат и поступает
2. удаление номера топика также не происходит, хотя команда в чат проходит
3. тоже самое и с добавлением нового номера топика

двигать в разные места пробовал...
Подскажите, может, что не так делаю!

ps. Просьба к Fe(one)X прикрепить сюда готовый скрипт тогда для АPI 2

Эм, если честно не знаю, я привык топики править в самом файле в папке со скриптами, поэтому не знаю есть эта проблема или нет, хотя по команде скрипт топики выводит в чат.

У меня другая проблема, решил заменить скрипт статистики (старый был сильно большой по объёму), но мне надо в нём сделать вот что:
Код скрипта

function UserConnected(tUser)
local Profile = (ProfMan.GetProfile(tUser.iProfile) and ProfMan.GetProfile(tUser.iProfile).sProfileName) or "Guest"
Core.SendToUser(tUser,"\n[::] Информация: \n[::] : Ник " ..tUser.sNick.." \n[::] Класс : "..Profile.." ("..tUser.iProfile..") \n[::] Ваш ip: "..tUser.sIP.." \n[::] Страна: "..tostring(IP2Country.GetCountryName(tUser)).."\n")
end
RegConnected = UserConnected
OpConnected = UserConnected

Нужно чтобы за место страны скрипт выдавал информацию пользователю с какой он сети. Слово Страна на Сеть поменять не сложно, но что требуется добавить и изменить в самом коде? Диапазоны сетей имеются, нужен только образец.
Заранее спасибо за помощь.
Go to the top of the page
+Quote Post
Enyby
сообщение 21.12.2011, 16:29
Сообщение #19


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Как самый простой вариант - в ip-to-country.csv прописать провадеров как отдельные страны. Нормальный вариант - сделать самому проверку на принадлежности IP нужным диапазон. Такой код есть во мнгоих скриптах. Можно оттуда выдрать и изменить под себя.
Go to the top of the page
+Quote Post
dj hoodo
сообщение 21.12.2011, 18:12
Сообщение #20


Участник
**

Группа: Пользователи
Сообщений: 38
Регистрация: 7.6.2009
Пользователь №: 3 508
Спасибо сказали: 0 раз




вот Этот скрипт добавит в описание юзера, его сеть
Скриптиг
------------------------------------------------------------------- Конфиг бота: -------------------------------------------------------------------

-- Профильные теги:
tProfileTag= {
[0] = "[:Администратор:]",
[1] = "[:Оператор:]",
[2] = "[:vip:]",
[3] = "[:Зарегестрированные:]",
[-1] = "[:Не Зарегестрированные:]"
}

-- Теги сети:
RangeDesc = {
"10.21.0.1-10.26.255.255-[Билайн Киев ]", --127.0.0.1-127.0.0.255 за место этого свой ипы на раён
"10.0.0.1-10.255.255.255-[Билайн]",
"10.41.0.1-10.44.255.255-[Билайн Запорожье]",
"10.51.0.1-10.53.255.255-[Билайн Львов]",
"10.61.0.1-10.64.255.255-[Билайн Харьков]",
"10.71.0.0-10.71.255.255-[Билайн Днепропетровск]",
"10.92.0.0-10.92.255.255-[Билайн ОДЕССА]",

}

-- Теги полов:
tMaleTags = {
["x"] = "[:*:]", -- Неизвестно
["m"] = "[:М:]", -- Мужской
["w"] = "[:Ж:]", -- Женский
}

-- Тег при IP, не входящем в описанные:
sNoDescMsg = "[Интернет]"

-- Профили у которых "не будет" шары ( 1 - нет шары, 0 - есть ) by AУA™.lua
tNoShareProfiles = {
[0] = 0, -- Админ
[1] = 0, -- ОПератор
[2] = 0, -- VIP
[3] = 0, -- Зарегеный юзер
[-1] = 0, -- Не заргеный юзер
}

-- Можно ли будет скачать с юзера "без шары" (0 - нет, 1 - да)
bCanDownload = 1

-- Будет ли откликаться юзер "без шары" на поисковые завпросы (0 - нет, 1 - да)
bAnswToSearch = 1

-- Будет ли описание полсе тега (1), либо в описании будет только тег (0)
bIsFuuDescr = 0


sMenuWay = "::Опции юзера::\\Ваш пол\\" -- Путь в меню к командам пола

sSexTblWay = "Sex.tbl" -- Файл с полом юзеров

---------------------------------------------------------------- Конец конфига! ----------------------------------------------------------------
-- Дальше лучше ничего не меняй! )))

function OnStartup()
sBot = SetMan.GetString(21)
tNeedToSend = {}
tNeedToSend2 = {}
tSex = {}
if loadfile(sSexTblWay) then
dofile(sSexTblWay)
end
local tableover = Core.GetOnlineUsers() or {}
for i, v in pairs(tableover) do
table.insert(tNeedToSend, v.sNick)
end
TmrMan.AddTimer(1000, "OnTimer")
end

function OnExit()
SaveToFile(sSexTblWay, tSex, "tSex")
end

function OnError(sErrorMsg)
OnExit()
end

OpConnected = UserConnected
RegConnected = UserConnected

function MyINFOArrival(curUser,sData)
table.insert(tNeedToSend, curUser.sNick)
end

function GetNickListArrival(curUser,sData)
table.insert(tNeedToSend2, curUser.sNick)
end

tCmds = {
["mysex"] = function(sUser, sData)
local _,_,arg1 = string.find(sData, "%b<>%s+%S+%s+(%S+)")
if arg1 ~= nil then
local sUserNick = sUser.sNick
if arg1 == "м" then
tSex[sUserNick] = "m"
OnExit()
MyINFOArrival(sUser)
Core.SendToUser(sUser, "<"..sBot.."> Вы выбрали пол: мужской.")
elseif arg1 == "ж" then
tSex[sUserNick] = "w"
OnExit()
MyINFOArrival(sUser)
Core.SendToUser(sUser, "<"..sBot.."> Вы выбрали пол: женский.")
else
Core.SendToUser(sUser, "<"..sBot.."> Укажите свой пол правильно: !mysex <м/ж>")
end
return true
else
Core.SendToUser(sUser, "<"..sBot.."> Вы не указали свой пол! Правильно: !mysex <м/ж>")
return true
end
end,
["sexlist"] = function(sUser, sData)
local _,_,arg1 = string.find(sData, "%b<>%s+%S+%s+(%S+)")
if arg1 == nil then
local sMsg = "\r\n\t"..string.rep("«»",25).."\r\n\t\tСписок мальчиков.\r\n\t"..string.rep("«»",25).."\r\n"
for i,v in pairs(tSex) do
if (v == "m") then
sMsg = sMsg.. "\r\n\t\t• "..i
end
end
sMsg = sMsg.."\r\n\r\n\t"..string.rep("«»",25).."\r\n\t\tСписок девочек.\r\n\t"..string.rep("«»",25).."\r\n"
for i,v in pairs(tSex) do
if (v == "w") then
sMsg = sMsg.. "\r\n\t\t• "..i
end
end
Core.SendToUser(sUser, "<"..sBot.."> "..sMsg)
return true
elseif arg1 == "м" then
local sMsg = "\r\n\t"..string.rep("«»",25).."\r\n\t\tСписок мальчиков.\r\n\t"..string.rep("«»",25).."\r\n"
for i,v in pairs(tSex) do
if (v == "m") then
sMsg = sMsg.. "\r\n\t\t• "..i
end
end
Core.SendToUser(sUser, "<"..sBot.."> "..sMsg)
return true
elseif arg1 == "ж" then
local sMsg ="\r\n\t"..string.rep("«»",25).."\r\n\t\tСписок девочек.\r\n\t"..string.rep("«»",25).."\r\n"
for i,v in pairs(tSex) do
if (v == "w") then
sMsg = sMsg.. "\r\n\t\t• "..i
end
end
Core.SendToUser(sUser, "<"..sBot.."> "..sMsg)
return true
end
end,
}

function ChatArrival(sUser,sData)
local sData = string.sub(sData, 1, -2)
local _,_,cmd = string.find(sData, "%b<>%s+[%!%+%?%#](%S+)")
if tCmds[cmd] then
tCmds[cmd](sUser, sData);
return true
else
return 0
end
end

function OnTimer()
ReWrite()
end

function ReBuilMyINFO(curUser)
local descript, userip = nil, CalcIP(curUser.sIP)
if userip ~= 0 then
for index,descIP in pairs(RangeDesc) do
local _,_,startRange,endRange,RangeDescript = string.find(descIP, "(.*)-(.*)-(.*)")
startRange = CalcIP(startRange)
endRange = CalcIP(endRange)
if userip>=startRange and userip<=endRange then
descript = RangeDescript
end
end
if descript == nil then
descript = sNoDescMsg
end
Core.GetUserData(curUser, 16)
local nick,share = curUser.sNick,curUser.iShareSize
if tNoShareProfiles[curUser.iProfile] == 1 then
share = 0
end
local sMale = tMaleTags["x"]
if tSex[curUser.sNick] then
sMale = tMaleTags[tSex[curUser.sNick]]
end
local addtag = descript.." "..tProfileTag[curUser.iProfile].." "..sMale
if bIsFuuDescr == 1 then
addtag = addtag.." "..curUser.sDescription
end
return "$MyINFO $ALL "..nick.." "..addtag.."$ $ $ $"..share.."$"
end
end

function CalcIP(ipcalc)
local _,_,a,b,c,d = string.find(ipcalc, "(%d+).(%d+).(%d+).(%d+)")
local calc = 0
if (tonumber(a) and tonumber(b) and tonumber© and tonumber(d)) then
calc = a*16777216 + b*65536 + c*256 + d
return calc
else
return 0
end
end

function OverWrite(curUser)
local tableover = Core.GetOnlineUsers() or {}
for i, Userover in pairs(tableover) do
local sNewMyINFO = ReBuilMyINFO(Userover)
Core.SendToUser(curUser, sNewMyINFO)
end
end

function ReWrite()
for i, v in pairs(tNeedToSend) do
local v2 = Core.GetUser(v)
if v2 then
local sNewMyINFO = ReBuilMyINFO(v2)
Core.SendToAll(sNewMyINFO)
Core.SendToUser(v2, sNewMyINFO)
tNeedToSend[i] = nil
end
end
for i, v in pairs(tNeedToSend2) do
local v3 = Core.GetUser(v)
if v3 then
local tableover = Core.GetOnlineUsers() or {}
for k, l in pairs(tableover) do
local sNewMyINFO = ReBuilMyINFO(l)
Core.SendToUser(v3, sNewMyINFO)
end
tNeedToSend2[i] = nil
end
end
end

function SearchArrival(curUser, sData)
if bAnswToSearch == 0 then
local tableover = Core.GetOnlineUsers() or {}
for i, Userover in pairs(tableover) do
if tNoShareProfiles[Userover.iProfile] ~= 1 then
Core.SendToUser(Userover, sData)
end
end
return 1
end
end

function ConnectToMeArrival(curUser, sData)
if bCanDownload == 0 then
local _,_, sToNick = string.find(sData, "^$%S+%s+(%S+)")
local sToNick = Core.GetUser(sToNick)
if sToNick and tNoShareProfiles[sToNick.iProfile] == 1 then
return 1
end
end
end
MultiConnectToMeArrival = ConnectToMeArrival
RevConnectToMeArrival = ConnectToMeArrival
SRArrival = ConnectToMeArrival
UDPSRArrival = ConnectToMeArrival

function SaveToFile(sFileWay, tTable, sTableName)
local sHandle = io.open(sFileWay,"w+")
sHandle:write(Serialize(tTable, sTableName))
sHandle:flush()
sHandle:close()
end

function Serialize(tTable, sTableName, sTab)
sTab = sTab or ""
sTmp = ""
sTmp = sTmp..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
sTmp = sTmp..Serialize(value, sKey, sTab.."\t");
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue
end
sTmp = sTmp..",\n"
end
sTmp = sTmp..sTab.."}"
return sTmp
end

А вот этот при входе юзера посылает сообщение с какой он сети. и Вообще имеет Очень хороший функционал по управлению юзерами разных сетей. называется NetworkSeparation ДА ВОТ ЖЕШ! ОН
мож что пригодится? все брал тут
Go to the top of the page
+Quote Post

3 страниц V   1 2 3 >
Ответить в данную темуНачать новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts ВАЖНО: Topic has attachmentsВопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
1 049 Wariner 603 488 3.2.2019, 12:51 Посл. сообщение: MIKHAIL
No new ВАЖНО: Topic has attachmentsМодули для скриптов RusHub
26 Setuper 29 927 21.3.2017, 17:31 Посл. сообщение: Alexey
No New Posts От: Вопросы Разработчикам Скриптов
От темы с ID: 173
0 MIKHAIL 1 970 23.1.2015, 0:56 Посл. сообщение: MIKHAIL
No New Posts От: Установка скриптов
От темы с ID: 5657
0 MIKHAIL 2 428 29.7.2014, 23:37 Посл. сообщение: MIKHAIL
No New Posts Установка скриптов
Нужна помощь по установке
2 _wRz_ 3 552 29.7.2014, 16:11 Посл. сообщение: Артём
No new От: Вопросы Разработчикам Скриптов
От темы с ID: 173
29 Wariner 14 076 28.1.2014, 13:11 Посл. сообщение: Alexey
No New Posts Единая платформа для скриптов
Обсуждения вопроса создания единой платформы скриптов
5 Enyby 4 983 18.1.2012, 20:15 Посл. сообщение: Setuper
No new Topic has attachmentsВопросы Разработчикам Скриптов с SQL
вопросы по скриптам (мелкие вопросы)
101 Wariner 23 709 6.12.2011, 0:34 Посл. сообщение: Enyby
No new ВАЖНО: Topic has attachmentsМетод Быстрого Перевода Скриптов Под API_1
Самостоятельный быстрый перевод из API_2 ---> в API_1
30 Setuper 37 077 14.8.2011, 21:16 Посл. сообщение: Олешка
No New Posts От: Переделка скриптов
От темы с ID: 4941
6 Ksan 5 644 12.8.2011, 11:33 Посл. сообщение: Ksan
No new ВАЖНО: Запросы Скриптов
Ваши идеи по разработке скриптов под HeXHuB
36 Setuper 30 115 16.5.2011, 9:40 Посл. сообщение: ANDRBEST
No New Posts Документация DBHub - Написание скриптов на Perl
0 Артём 5 029 20.10.2010, 18:08 Посл. сообщение: Артём
No New Posts Topic has attachmentsЗаготовки скриптов для PtokaX
Делимся болванками скриптов
4 alex82 7 270 11.10.2010, 2:49 Посл. сообщение: alex82
No New Posts ВАЖНО: Запросы Скриптов
6 njnj 8 900 3.7.2010, 8:45 Посл. сообщение: Accelerator
No New Posts От: Вопросы Разработчикам Скриптов
От темы с ID: 173
0 Alexey 1 303 29.6.2010, 15:11 Посл. сообщение: Alexey

 



RSS Сейчас: 16.11.2019, 4:40