|
|
Модератор форума: Singler |
Форум Полезное Макросы для WoW Вопрос по патернам и string.match find (lua code) |
Вопрос по патернам и string.match find |
Вопрос не к рядовым юзерам. А по типу Dreamlolz, и в таком духе. Мб уже и сообщество научилось юзать Lua по нормальному, хз. Не обижайтесь.
Я бы справился и 1, но уже чёт долго туплю над этой задачей. Решил обратиться на форум. Мне Дрим часто помогал с кодом. Возникновение запроса: Все модеры как модеры, банят ручками и глазами. Всё сообщения читают. Но нашелся один, который решил заранее составить список плохих слов, дабы подсвечивать себе это плохое слово в чате, и выдавать мут, и очевидно не читать весь чат флуд. Вот тема. Вот скрин. Вообщем лень - двигатель прогресса. Я только за =) К модератору претензий нет, делает это он скорей всего с помощью чат аддонов по типу Prat и т.д. Я естественно хочу поступить другим способом. В своем аддоне самостоятельно составлять список слов и контролировать этот процесс вручную. И не в коем случае не использовать готовые распространенные аддоны\решения. Итак запрос: Из сообщения - (Идет сбор в Гс, нид все) или (Продам кровь саргераса) (пРодам дс) (проДаМ гараж) хотелось бы находить и подсвечивать заранее заданное мной слово. И самое важное, зачем я и обратился сюда, игнорировать тот момент, что оно написано заборчиком\частоколом, или капсом, или какая-то буква в слове большая. Моё прошлое решение. Да, находит, да подсвечивает. Это удобно если нужно быстро что-то добавить, и не важно если пропустишь в чате сообщение с искомым, но... Недостаток - нужно вводить огромную базу написания только одного слова. Это тупо\долго\не правильно. Комбинаций масса. Хочу вбивать поиск нужных слов, только 1 раз. Код local MyFilterAddon = CreateFrame'Frame' local function myChatFilter(self, event, arg1, ...) local ignorelisttext = {"гс", "ГС", "Гс", "гС", "Гробница саргераса", "Гробница Саргераса", "продам", "Продам", "продаМ", "прОдам", "ПРодам", } [url=https://forum.wowcircle.com/member.php?u=248585]Мой профиль for i = 1, #ignorelisttext do if string.find(arg1, ignorelisttext[i], 1, "%uds.") then PlaySound(866, "Master"); return false, gsub(arg1, ignorelisttext[i], "\124cff0070DDГС\124r"), ... end end --for end --end function function MyFilterAddon:PLAYER_LOGIN() ChatFrame_AddMessageEventFilter("CHAT_MSG_CHANNEL", myChatFilter) ChatFrame_AddMessageEventFilter("CHAT_MSG_SAY", myChatFilter) end MyFilterAddon:RegisterEvent'PLAYER_LOGIN' MyFilterAddon:SetScript('OnEvent', function(self, event, ...) return self[event](self, event ) end) если ограничить до: Код local ignorelisttext = { "гс", "продам", } Функция выше была найдена в нете, и по дефолту имела: Код if arg1:find("green") then return false, gsub(arg1, "green", "blue"), ... end вместо моего корявого string.find который криво работает из-за недопонимания. Патерн не работает( Заменяет в чате, только для вас, слово грин на блю. Работа с патернами: Берём макрос Код local a = string.match("string", patern) print(a) при local a = string.match("1Привет33fRrHJK", "%u") получаем "R" (%u - аппер кейс, большие буквы) Буква П проигнорена. Ват? Оо. Где HJK? не ретурнит их, не принтует( при local a = string.match("1Привет33fRr", "%l") получаем "f" (%l - ловер кейс, малые буквы) Все русские символы проигнорированы( и r, 2-я по счету малая тоже( Надеюсь запрос понятен. Разжевал как мог. Я перебрал много вариантов. Допускаю что и не match find мне нужны. Литература которая может понадобиться: • Wowjp: Моя темка • Yt: youtube.com/@LuaNaZakaz • Discord: discord.gg/Jgmf7AJ • Vk: vk.com/luanazakaz • Telegram: t.me/LuaNaZakaz • Boosty: boosty.to/luanazakaz
Сообщение # 1 написано 19.08.2018 в 07:11
|
| |||
| |||