Stinger
-
Публикации
36 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем Stinger
-
-
Появился вопрос, можно ли как-то в регулярном выражении задать кол-во символов ? В php я бы решил это так {1,4} , тут такое не работает!
-
Если Lua-интерпретатор вшит в скомпилированное .exe-приложение, то крайне маловероятно, что тебе удастся прикрутить стороннюю либу без продажи души дьяволу. Также штатными средствами без поддержки юникода разбить строку на юникод-символы не представляется возможным, так как любая строка в Lua - это последовательность байт, воспринимаемых string-библиотекой в виде ASCII-символов.
Однако это не значит, что проблема не решаема. Для начала тебе потребуется написать собственный костыль, разбивающий строку на составляющие байты и загоняющий их в байт-массив, делается это дефолтным string.byte() с указанным диапазоном:
...
Безусловно, такой подход крайне неэффективен, но что поделать?
Ребят , если кому интересно даю ответ, все мы копали не там!
--Проверено в lua 5.0 os.setlocale ("", "ctype") -- Добавляем волшебную строку перед выводом, указываем параметр, что бы не возникало проблем с цифрами! print("Оригинальное сообщение: " .. message) print("нижний регистр: " .. string.lower(message)) print("ВЕРХНИЙ РЕГИСТР: " .. string.upper(message))Отпишу дальше, что получилось и поделюсь кодом, может кому то пригодиться.
-
Если Lua-интерпретатор вшит в скомпилированное .exe-приложение, то крайне маловероятно, что тебе удастся прикрутить стороннюю либу без продажи души дьяволу. Также штатными средствами без поддержки юникода разбить строку на юникод-символы не представляется возможным, так как любая строка в Lua - это последовательность байт, воспринимаемых string-библиотекой в виде ASCII-символов.
Ругается на эту строку:
attempt to index global `bit32' (a nil value)
символы которые выделил чёрным, не пропускает без ковычек.
if bit32.band(bit32.rshift(bytes, 8 - j), 0x1) == 0x0 then
-
-
Не получается вообще ни в какую, может есть функция которая разбивает строку на символы и пробегает по массиву заменяя их на маленькие ?
-
Как нибудь можно впаять модуль Unicode в lua 5.0 ?
-
Делюсь наработкой:
local word = { "мат", "mat" } if (string.find(message, "[A-z0-9][.][A-z0-9]")) then Message(player,"Обнаружена реклама, сообщение не отправлено!") return 0 end for i = 1 , size(word), 1 do if (string.find(string.lower(message), word[i]) ~= nil) then Message(player,"Обнаружено плохое слово, сообщение не отправлено!") return 0 end end
И если написать слово так englis h то уже пропускает, как бы это решить есть идеи ?
Вот такой простой вариант: ^[%w][%w%-%.%+]
!Не работает с юникодом!
А по поводуstring.lower()
юзай модуль unicode
Я бы с радостью, да вот игра устарела и lua 5.0 вшито в .exe и обновить версию lua не представляется возможным.На данный момент проблемы 2!
1) Перевести текст Unicode в нижний регистр.
2) При пробелах находить это же слово, вот так М а т.
-
-- Следующая
if message == link then
return 0
Ещё столкнулся с проблемой string.lower не работает с Unicode
-
Домены или ссылки?

Скорее домены, думаю так эффективнее ибо не каждый использует http:// и www, спасибо за поправку.
-
Здравствуйте, возможно есть у кого то регулярное выражение на домены для lua, сам к сожалению не могу составить такое, пока не изучал регулярные выражения а именно интересует отсеивание ссылок любого типа от yandex.ru до яндекс.рф.
-
Спасибо всем за ответы, буду работать над функцией ECS, если появятся новые идеи то с радостью рассмотрю их, вы правы слово из 3-х букв, можно написать очень многими способами, по этому фильтр почти не реальный, ну я готов рискнуть, Модератор и так будет следить за чатом, просто хотелось бы какую то Автоматическую карающую машину создать)
-
Здравствуйте!
Хочу написать Фильтр Мата для игры, а именно русских слов , знаю, что это очень сложно, хочу спросить вашего совета, как лучше фильтровать мат!
Функция чата примерно такая:
function GameChat(player,message) -- Функция чата. if (string.find(message, "fuck") ~= nil) then -- Тут будет фильтроваться МАТ local block_time = 10 -- Время блокировки чата Message(player,"Ваш чат заблокирован на 10 минут за мат!") -- Показываем уведомление игроку. BlockChat(player, block_time) -- Блокируем чат игроку на 10 минут. return 0 -- Запрещаем выводить сообщение в чат. end return 1 end
Во первых есть проблемы со string.find, если банально написать Fuck он уже не поймает слово, как это можно решить ?
И собственно , как лучше подключать сам цикл , что бы не сильно грузить систему и как лучше фильтровать сам мат, буду признателен за ваши ответы по теме.
-
Если вас интересуют исходники LuaSQL модуля на C++ могу выложить, делалось под игру, работает с MSSQL SERVER любой версии.
-
Всё работает, после того как взял целую функцию с того сайта.
Вот эту:function comma_value(amount)
local formatted = amount
while true do
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
if (k==0) then
break
end
end
return formatted
endВидимо это связанно как то с тем, что я использую lua 5.0, кстати есть ли возможность его обновить если он вшит в консоль игры ?
-
attempt to call field `match' (a nil value) вот такая проблема с этой функцией)
Исправил, мой косяк, спасибо огромное за помощь Totoro
-
...
Спасибо от души, эта функция нужна именно на выходе.
-
Мне нужно сделать, что бы значения больше 1000 разбивались запятыми допусти 1510 стало 1,510 и тд , думаю понятно, как это можно сделать средствами lua ?
-
Спасибо за ответ, не совсем то , что надо, нужно следующее :
Изначально в файле значение 5! -- только 5 ничего более
Программа открывает файл - получает его значение в данном случае 5,
Потом плюсует к этому значению допустим 4 и перезаписывает файл.
И при следующем открытии должно выдать уже не 5 а 9!
Не построчно!
-
Здравствуйте друзья, проблема в следующем lua обращается к файлу и нужно что бы в следующий раз он получил значение из файла - добавил к нему новое и перезаписал, но lua просто дописывает значение в файл, просьба помочь.
-
Супер, всё работате как часы!
-
Или так можно.
https://hastebin.com/idufakifim.lua
Код не проверял.
Можно сразу передать функции много переменных и она на выходе выдаст размеры их.
local s1, s2, s3 = size(arr1, arr2, "hello world")
Спасибо, попробую.
-
Большое спасибо, думаю можно закрывать тему, всем спасибо за помощь.
-
Допустим у меня длинная функция и вместо того что бы везде подставить #a #b #c #d я буду вынужден подставлять size(a) size(b) size© size(d), есть ли какое то более оптимальное решение ?
Или для данной версии это максимум, чего можно достигнуть ?
Так же большое спасибо за быстрый ответ.
-
Спасибо за ответ, ваше решение достаточно хорошее но везде использовать функцию вместо символа не очень согласитесь, есть ли возможность написать функцию под символ ?

Регулярное Выражение
в Разные (отсортировать)
Опубликовано:
Спасибо