Page 1 of 1

c&c like input — замена одноимённого плагина

Posted: Tue 13 Sep, 2016 15:14
by raven428
переписал ещё один свой плагин на lua. вместо тысячи слов:

Image

ссылка

c&c like input - замена одноимённого плагина

Posted: Tue 13 Sep, 2016 15:31
by zg
1. использование ECF_AUTODELETE должно упростить код.
2. string.match(param.UnicodeChar, match) нужно заменить на param.UnicodeChar:match(match). то что оно сейчас вроде бы работает — просто везенье.

c&c like input — замена одноимённого плагина

Posted: Tue 13 Sep, 2016 16:01
by raven428
zg wrote: 1. использование ECF_AUTODELETE должно упростить код.
да, действительно упростило, спасибо.
zg wrote: 2. string.match(param.UnicodeChar, match) нужно заменить на param.UnicodeChar:match(match). то что оно сейчас вроде бы работает — просто везенье.
а вот здесь - нет. после простой замены вообще перестало работать. если убрать сравнение с nil, то обрабатывает все нажатия на клавиши, т.е. всегда возвращает истину.

мои познания в lua не позволяют увидеть разницу между двумя этими операторами. в мануалах, которые мне удалось найти разница тоже незаметна. сможете объяснить подробней?

c&c like input — замена одноимённого плагина

Posted: Tue 13 Sep, 2016 16:05
by John Doe
raven428 wrote: сможете объяснить подробней?
string.match не знает про utf8
Для работы с юникодом у нас unicode.utf8.match
Индексируя через двоеточие вы обращаетесь именно к unicode.utf8.match

В мануале см. разделы "Unicode support" и "Selene Unicode"

P.S
Вижу у вас в коде %g и не понимаю что это

P.P.S.

Code: Select all

if(param.EventType ~= 1) then
Есть же константы.

И ещё хотел бы посоветовать темы называть содержательнее, давая хотя бы намёк пользователю, о чём скрипт.

c&c like input — замена одноимённого плагина

Posted: Tue 13 Sep, 2016 16:48
by zg
raven428 wrote:а вот здесь - нет.
значит паттерн неправильный.

c&c like input — замена одноимённого плагина

Posted: Tue 13 Sep, 2016 17:07
by raven428
John Doe wrote: P.P.S.
CODE: SELECT ALL
if(param.EventType ~= 1) then
Есть же константы.
искал, но не нашёл, пришлось выяснять методом тыка. надеюсь на подсказку :)
zg wrote: значит паттерн неправильный.
да, не работало из-за %g, теперь работает.

c&c like input — замена одноимённого плагина

Posted: Tue 13 Sep, 2016 18:07
by John Doe
raven428 wrote: искал, но не нашёл
http://api.farmanager.com/ru/winapi/input_record.html
Константы у нас все в far.Flags

c&c like input — замена одноимённого плагина

Posted: Tue 13 Sep, 2016 18:16
by John Doe

Code: Select all

if(param.UnicodeChar:match(pattern) == nil) then
Это то же, что и if not param.UnicodeChar:match(pattern) then
И два условия у вас вполне можно объединить.

Равно как и в следующем обработчике всю громоздкую конструкцию заменить на

Code: Select all

  if event==far.Flags.EE_REDRAW and (cx ~= -1) and (cy ~= -1) then
    editor.AddColor(eid, cy, cx, cx, far.Flags.ECF_AUTODELETE, cccolor)
    cx, cy = -1, -1
  end
Не знаю кому как, а мне лично так банально понятнее