Нужна помощь с Аддоном/Кодом (Фильтр чата)
Нужна помощь с Аддоном/Кодом
В общем задача в следующем.
1. Поймать сообщение в определенном окне чата по набору ключевых слов.
К примеру: гильдия+pve+набор
Стоит учесть, что если не будет хватать одного из ключевых слов, то сообщение не перехватывать.
2. Заблокировать его в том окне.
3. Скопировать его в другое окно.
Звучит просто, но знаю, что на самом деле все куда сложнее, потому и прошу помочь, сам врятли осилю. =З
Большое СПАСИБО! Ururu за помощь! =З
В общем вот такой полезный небольшой аддончик получился:
PHP код:
-- Автор Ururu WoWCircle
do
local o=ChatFrame3.AddMessage -- Окно чата, в котором ловить сообщения
local f = {
-- Пример применения фильтров
-- {
-- {3,4,5}, --Окна чата, в которые копировать сообщения
-- {"+","-"}, --Игнорировать сообщения, если в нём эти слова (В случае ненадобности, оставить скобки пустыми - {} )
-- {"=","*"}, --Копировать сообщения, если в нём эти слова (Для использования комбинированного фильтра, заполнить значения в поля ниже)
-- {"1","2"} --Копировать сообщения, если в нём эти слова (Для использования одиночного фильтра, вставить вместо значения пробел - {" "})
-- },
-- Список всех фильтров
{
{8}, -- Набор в Гильдии
{"хватит", "надоели", "флуд", "куплю", "продам"},
{"ги ", "guild", "гильди", " ги", " рт", "рт ", " рт ", "йотунхейм", "faradenza", "all we need is luck", "tuman"},
{"набор", "нужны", "мск", "людей", "бойцов", "набираю", "epgp", "принимает", "нид"}
},
{
{7}, -- РС, ЦЛК, ИВК
{"куплю", "продам"},
{"цлк", "рс", "ивк"},
{" 10", "10 ", "10об", "10гер", "10хм", "10 об", "10 гер", "10 хм"," 25", "25 ", "25об", "25гер", "25хм", "25 об", "25 гер", "25 хм"}
},
{
{9}, -- ИК, ОС, СА
{"куплю", "продам"},
{"ик", "ос", "са"},
{" 10", "10 ", "10об", "10гер", "10хм", "10 об", "10 гер", "10 хм"," 25", "25 ", "25об", "25гер", "25хм", "25 об", "25 гер", "25 хм"}
},
}
function ChatFrame3:AddMessage(m,...) -- Окно чата, в котором ловить сообщения
for _,v in ipairs(f) do
local n = 0
for _,j in ipairs(v[2]) do if m:lower():find(j) then n=1 break end end
if n==0 then
for i=3,#v do
for _,j in ipairs(v[i]) do if m:lower():find(j) then n=1 break end end
if n==0 then break else n=0
if i==#v then
if Prat then
Prat.loading = true
for _,n in ipairs(v[1]) do _G["ChatFrame"..n]:AddMessage(m,...) end
Prat.loading = false
else
for _,n in ipairs(v[1]) do _G["ChatFrame"..n]:AddMessage(m,...) end
end
return
end
end
end
end
end
o(self,m,...)
end
end
Есть незначительный баг. В фильтре не используйте квадратные или круглые скобки. Иначе будет игнорироваться второй фильтр. То есть если выставить в первом фильтре "са", а во втором "10", тогда фильтр будет применяться не только к сообщениям с комбинацией слов "са" и "10". Но и просто к "са". Игнорируя второй фильтр.
А может кто нибудь этот аддончик оформить визуально? То есть добавить возможность настройки во время игры?
То есть допустим тыкаем кнопку "добавить фильтр", а он нам выдает вот такой список для заполнения:
Выбор окна(окон) из которого будут копироваться сообщения.
Выбор окна(окон) в которые будут копироваться сообщения.
Первый фильтр сообщений
Второй фильтр сообщений.
Фильтр исключений.
Так же, в отдельном окне аддона отображение всех внесенных фильтров и возможность их редатирования и удаления...
Примерно так же, как в коде.
Я понимаю, что это уже сложнее, чем сырой код, но может кто нибудь поможет? =З