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

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
raven428
Posts: 51
Joined: Sat 28 Mar, 2009 11:17
Has thanked: 10 times
Been thanked: 1 time

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

Post by raven428 »

переписал ещё один свой плагин на lua. вместо тысячи слов:

Image

ссылка
too much raVen over paradise...
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

1. использование ECF_AUTODELETE должно упростить код.
2. string.match(param.UnicodeChar, match) нужно заменить на param.UnicodeChar:match(match). то что оно сейчас вроде бы работает — просто везенье.
User avatar
raven428
Posts: 51
Joined: Sat 28 Mar, 2009 11:17
Has thanked: 10 times
Been thanked: 1 time

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

Post by raven428 »

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

мои познания в lua не позволяют увидеть разницу между двумя этими операторами. в мануалах, которые мне удалось найти разница тоже незаметна. сможете объяснить подробней?
too much raVen over paradise...
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post 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
Есть же константы.

И ещё хотел бы посоветовать темы называть содержательнее, давая хотя бы намёк пользователю, о чём скрипт.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

raven428 wrote:а вот здесь - нет.
значит паттерн неправильный.
User avatar
raven428
Posts: 51
Joined: Sat 28 Mar, 2009 11:17
Has thanked: 10 times
Been thanked: 1 time

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

Post by raven428 »

John Doe wrote: P.P.S.
CODE: SELECT ALL
if(param.EventType ~= 1) then
Есть же константы.
искал, но не нашёл, пришлось выяснять методом тыка. надеюсь на подсказку :)
zg wrote: значит паттерн неправильный.
да, не работало из-за %g, теперь работает.
too much raVen over paradise...
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

raven428 wrote: искал, но не нашёл
http://api.farmanager.com/ru/winapi/input_record.html
Константы у нас все в far.Flags
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post 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
Не знаю кому как, а мне лично так банально понятнее
Post Reply

Return to “Обсуждение макросов”