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

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

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

Postby raven428 » Tue 13 Sep, 2016 15:14

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

Image

ссылка
Last edited by raven428 on Tue 13 Sep, 2016 17:03, edited 5 times in total.
too much raVen over paradise...

User avatar
zg
zero-gravity
Posts: 5212
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 41 times
Contact:

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

Postby zg » Tue 13 Sep, 2016 15:31

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

User avatar
raven428
Posts: 42
Joined: Sat 28 Mar, 2009 11:17
Has thanked: 8 times
Been thanked: 1 time

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

Postby raven428 » Tue 13 Sep, 2016 16:01

zg wrote:Source of the post 1. использование ECF_AUTODELETE должно упростить код.
да, действительно упростило, спасибо.

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

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

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

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

Postby John Doe » Tue 13 Sep, 2016 16:05

raven428 wrote:Source of the post сможете объяснить подробней?
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
Есть же константы.

И ещё хотел бы посоветовать темы называть содержательнее, давая хотя бы намёк пользователю, о чём скрипт.
Last edited by John Doe on Tue 13 Sep, 2016 16:08, edited 1 time in total.

User avatar
zg
zero-gravity
Posts: 5212
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 41 times
Contact:

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

Postby zg » Tue 13 Sep, 2016 16:48

raven428 wrote:Source of the postа вот здесь - нет.
значит паттерн неправильный.

User avatar
raven428
Posts: 42
Joined: Sat 28 Mar, 2009 11:17
Has thanked: 8 times
Been thanked: 1 time

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

Postby raven428 » Tue 13 Sep, 2016 17:07

John Doe wrote:Source of the post P.P.S.
CODE: SELECT ALL
if(param.EventType ~= 1) then
Есть же константы.
искал, но не нашёл, пришлось выяснять методом тыка. надеюсь на подсказку :)

zg wrote:Source of the post значит паттерн неправильный.
да, не работало из-за %g, теперь работает.
too much raVen over paradise...

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

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

Postby John Doe » Tue 13 Sep, 2016 18:07

raven428 wrote:Source of the post искал, но не нашёл

http://api.farmanager.com/ru/winapi/input_record.html
Константы у нас все в far.Flags
Last edited by John Doe on Tue 13 Sep, 2016 18:08, edited 1 time in total.

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

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

Postby John Doe » Tue 13 Sep, 2016 18:16

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

Не знаю кому как, а мне лично так банально понятнее


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

Who is online

Users browsing this forum: No registered users and 1 guest