По факту сейчас - не может. А чтобы мог - планировалось RegisterMacroFunc (или как-то так)... Или на это теперь забили?
Примечание модератора: связанная тема http://forum.farmanager.com/viewtopic.php?f=15&t=7805
По факту сейчас - не может. А чтобы мог - планировалось RegisterMacroFunc (или как-то так)... Или на это теперь забили?
В первую очередь нужно, чтобы заработала вся старая функциональность. А потом можно будет делать разные интересные вещи.Max Rusov wrote:По факту сейчас - не может. А чтобы мог - планировалось RegisterMacroFunc (или как-то так)... Или на это теперь забили?NightRoman wrote:Но идея-то была вроде, что с int плагин больше инфы может в макрос вернуть.
Смысл все тот-же - интеграция с скриптов с плагинами, естественно. Или вы рассчитываете, что все плагины будут переписаны на LUA?
И да (часто), и нет (редко, если сложный код или просло легче в плагине реализовать и поддерживать). Но с Луа новый пласт возможностей появляется по идее по поводу вызовов кода из плагинов (и наоборот даже можно, если не ошибаюсь, из плугов вызывать функи из скриптов, в теории, продвинутую кастомизацию можно выносить в скрипты).Skirda wrote:А смысл? Ты в луо-макросе можешь написать func...
Было бы неплохо.Shmuel wrote:Plugin.Call как раз добавить не проблема.
Plugin.Call позволяет плагинам добавлять произвольные функции. Тот же синус, например, который всегда фигурирует в дискуссиях на эту тему.John Doe wrote:Ну а 0000466: Расширение макроязыка плагинами в принципе возможно реализовать?
В смысле сделать доступной в макросах функцию m2l.Convert()
В Lua эта корявость легко преодолима: делается модуль, а в нём красивые обёртки для подобных функций.John Doe wrote:Вот и я об этом.Shmuel wrote:Plugin.Call позволяет плагинам добавлять произвольные функции. Тот же синус, например, который всегда фигурирует в дискуссиях на эту тему.
Очень коряво выходит:вместо простогоCode: Select all
Plugin.Call("887631b9-49cc-415f-be22-d6b07510510d","Sin",3.14)
math.sin(3.14)
Code: Select all
function sin(arg)
return Plugin.Call("887631b9-49cc-415f-be22-d6b07510510d","Sin",arg)
end
плагин может выполнить макрос:John Doe wrote:Это безусловно решает проблему (хотя придётся в каждом макросе подключать модуль).Shmuel wrote:В Lua эта корявость легко преодолима: делается модуль, а в нём красивые обёртки для подобных функций.
Другие варианты реализации не рассматриваются?
Code: Select all
_G.sin=function(arg)
return Plugin.Call("887631b9-49cc-415f-be22-d6b07510510d","Sin",arg)
end
Верно.John Doe wrote:Собственно такой lua файл можно просто положить к скриптам, и при загрузке макросов код выполнится.
Верно?
Ну раз не надо, делать не буду.John Doe wrote:Да в общем необходимости нет.
Для этого он должен быть preloadzg wrote:плагин может выполнить макрос
и?Max Rusov wrote:Для этого он должен быть preloadzg wrote:плагин может выполнить макрос
Это не всегда удобно. Предполагалось, что ProcessMacroFunc не требует, чтобы плагин был preload.zg wrote:и?
я ни где не писал, что это всегда удобно. это был один из примеров, как при желании можно сделать.Max Rusov wrote:Это не всегда удобно.
А ведь dll плагина наверно может непосредственно содержать Lua модуль?Shmuel wrote:В Lua эта корявость легко преодолима: делается модуль, а в нём красивые обёртки для подобных функций.John Doe wrote:Вот и я об этом.Shmuel wrote:Plugin.Call позволяет плагинам добавлять произвольные функции. Тот же синус, например, который всегда фигурирует в дискуссиях на эту тему.
Очень коряво выходит:вместо простогоCode: Select all
Plugin.Call("887631b9-49cc-415f-be22-d6b07510510d","Sin",3.14)
math.sin(3.14)Code: Select all
function sin(arg) return Plugin.Call("887631b9-49cc-415f-be22-d6b07510510d","Sin",arg) end