Вверх ↑
Этот топик читают: Гость
Ответов: 1841
Рейтинг: 123
#1: 2017-11-14 20:55:43 ЛС | профиль | цитата
Компоненты для встраивания Lua скрипта в Hiasm приложение. http://forum.hiasm.com/getfile/38616
Примеры http://forum.hiasm.com/getfile/38292
Не стал делать традиционным методом, как Visual Basic, или Java Script.
Все они заточены на статический кусок кода исполняемый в приложении.
Почему-бы тогда не выразить то-же самое в IC?
С Lua дела обстоят иначе. Lua позволяет создавать динамические структуры, создавать и уничтожать новые функции и переменные из основного приложения и
менять текст скрипта и всё это во время работы приложения. По этому его удобно использовать в качестве конфигурационного языка.
И вообще, Lua — это крошечный и простой язык.

LuaScript - это основной компонент. Он создаёт виртуальную машину Lua. Виртуальных машин в приложении может быть несколько и они могут обслуживать
свои потоки.
Скрипт может читается (исполняться), как из входного потока, так и из файла. Скрипт может быть, как в текстовом виде, так и в бинарном - скомпилированном виде. Разницы в применении нет.

Пара компонентов lua_getfunction и lua_HiFunction образуют Callback в Lua, или Hiasm, в зависимости от порядка их применения.

lua_HiFunction - компонент регистрирует имя функции (именованный кусок схемы), который потом можно вызвать из Lua.
Параметры в Hiasm передаются через правые точки.
Нижних точек не стал делать, потому что получается неуклюже приводить данные к определённому типу, или в TData + промежуточное хранение(никому не нужное) - аргументы берутся со стека, во всеми вытекающими...
Удалось найти хорошее решение на стыке языков. В Lua переменные динамического типа и принимают нужный тип в момент применения.
И не все типы, что есть в Lua можно протащить через точки - их очень много. Если нужна экзотика, то через IC.
Не цепляйте точку doRegisterF на точку onOUT компонента hiLuaScript, потому что это не конец чтения скрипта, а окончание работы виртуальной машины.
(скрипты могут подгружаться динамически, и выполнять свои функции.)

Hilua_getfunction - компонент вызывает функции определённые в Lua.
Аргументы подаются на верхние точки.
Результаты получаем из правых точек. Результатов функции Lua может быть несколько. Процедура - функция без результата.
Пустых верхних точек не должно быть. Это приведёт к ошибке.
Обработчика ошибок не стал делать из-за рентабельности, хотя такая возможность есть. Тогда придётся запускать функцию в защищённом режиме и отслеживать стек.
Лучше потом сделать отладчик... В dll это заложено. В dll заложены различные библиотеки, чтобы не париться, так что запускаемая виртуальная машина хорошо упакована. Dll имеет название lua5.1.dll и полностью совместима с обычной. В дальнейшем библиотеку можно завернуть в паскаль.
Нужно посмотреть не юзает её кто нибудь ещё из https://yadi.sk/d/2eFy5tu23PhPB3?

Установка обычная. Перетаскиваем ini файлы на поле Hiasm. lua5.1.dll кидаем в корень папки Hiasm.
Для контроля, скопировать все pas файлы в .\HiAsm\Elements\Delphi\code\.


Продолжение следует.
Следующие серии уже снимаются.

Редактировалось 7 раз(а), последний 2019-02-27 02:05:44
карма: 5

3
Голосовали:LainX, andrestudio, Vaeltaja
vip
#1.1контекстная реклама от партнеров
Ответов: 4744
Рейтинг: 530
#2: 2017-11-16 20:38:20 ЛС | профиль | цитата
flint2, на самом деле ещё один мёртворождённый элемент, даже делай ты его по подобию Gentee а не так
flint2 писал(а):
Не стал делать традиционным методом, как Visual Basic, или Java Script.
то всё равно писателей на него тут не сыскать будет. Тут художников достаточно, причём тех которые с чужого полотна списывают
карма: 6
0
Ответов: 1841
Рейтинг: 123
#3: 2017-11-16 22:33:33 ЛС | профиль | цитата
Скажу так. Я преследую чисто определённую цель - гимнастика мозгов.
Мозги без практики ржавеют. Давным давно, ...
Если какие нибудь примеры броские выложить типа https://www.youtube.com/watch?v=i_W2c01DFwY , то наверное охотники нашлись-бы, правда не много.
Что-то похожее можно выложить, на чём учился, но доля Hiasm заключается в кнопочках и нескольких IC.

В общем дело было так, я сидел курил табак...
Внук спросил, что было до юрского периода? Решил сделать реконструкцию Триасового периода.
Нашел движок Leadwerks, понравился, а там интерфейс на Lua. Стал изучать, благо, что чрезвычайно лёгок для изучения.
Движок в изучении - куда круче. Движков с интерфейсом на delphi всего два, да и те не фонтан. Почему-то хотелось сохранить какую нибудь зацепку к Hiasm, почему, и сам не знаю. По этому СИ не рассматривал.
Задумка была такая, чтобы мышкой и кнопочками путешествовать + из калаша стрелять.
Получилось. Чтобы было представление о чём речь - вот похожая штука https://www.youtube.com/watch?v=W7FMXZUmcvo , или https://www.youtube.com/watch?v=ITrKX1w--aE
Могу такую https://www.youtube.com/watch?v=xaiTw5RuG84 выложить, только упрощённую и не с полётом камеры, а бродить с автоматом.
Как не крути, надо и движок выкладывать. Скорее будут интересны прибамбасы сделанные в Hiasm для "съёмок" Мезозоя.

Всё лето развлекался, вот и решил наклепать компоненты. Не пропадать-же добру.
Но IC это одно, а компоненты - совсем другое. Тут концепция нужна. Наклепать сотни компонентов с одной функцией - это не выход, как и не выход сделать один компонент "скрипт". IC в данном случае тоже не очень удобны, если их везде тыкать.
По мере осмысления буду рисовать по нескольку штук. Тоже ведь занятие.

Редактировалось 6 раз(а), последний 2017-11-17 00:41:17
карма: 5

0
Ответов: 4744
Рейтинг: 530
#4: 2017-11-17 20:06:02 ЛС | профиль | цитата
flint2, скажу так, пути господни неисповедимы. Думал ВАЩЕ!!! сюда ни нагой больше, дык смотрю и так всё хиреет само собой, ну думаю хоть встряхнуть кого кто ещё дышит
карма: 6
0
Ответов: 1841
Рейтинг: 123
#5: 2017-11-17 22:27:55 ЛС | профиль | цитата
Дон andrestudio, ты шибко не серчай! Всё образуется!
Ты вот пришел, построил всех...
А я чё?
Я теперь помногу ни-ни, возьму бутылочку и пивка, чтоб деньги не на ветер. Ведь на пенсии...
Вот тогда кровь до мозга доходит, ну и хмеля чутка.
Вот тогда и пишу, когда полёт мысли необычайный.

Короче, обнимаю!


сюда ни нагой больше

Где предмет поучения икать будешь?
На родных и на работе и так перебор, жалеть надо.

Редактировалось 3 раз(а), последний 2017-11-17 22:53:09
карма: 5

0
Ответов: 4744
Рейтинг: 530
#6: 2017-11-17 23:22:30 ЛС | профиль | цитата
flint2, постараюсь быть кратким.
1) Ты ЧУВАК, хотя твои тексты читать это как ребусы разгадывать (но всё равно интересно)
2) Меня здесь научили программировать (т.е думать как это должно выглядеть и работать, тогда ещё можно было из меня пластилин лепить), жаль тут многих учителей не видать и уже давно
3) Сюда пришёл из MultimediaBuilder(тоже конструктор), там расширяемые скрипты были в почёте (х.з что тут была за паранойя, когда за IC к анафеме могли присечь за такое), молчать не могу раз уж понесло, тут звания раздавали за лукавые схемы, типа соревнования у кого короче от т.з. Так вот у кого оказался короче те уже давно не отсвечивают
4) Немного разочарован что проект к моему сожалению (мнение моё и чисто субъективное) начинает завершающую стадию (не только для себя а так же для коллег кто много сюда вкладывал)
5)
andrestudio писал(а):
Где предмет поучения икать будешь?

https://www.google.ru flint2, если есть более надёжные источники предлагай
карма: 6
0
Ответов: 1841
Рейтинг: 123
#7: 2017-11-18 00:34:11 ЛС | профиль | цитата
постараюсь быть кратким.

Я тоже.
Тут сын младший нарисовался, ну и как положено..., а я уже.
Короче, чтоб лишнего не наболтать спьяну.

Проект не к твоему, не к моему, не к кого либо ещё сожалению ̶н̶а̶ч̶и̶н̶а̶е̶т̶ вошел в завершающую стадию.
Это естественный процесс всего сущего. Это не плохо не хорошо, а так положено.
Можно рассуждать о всплесках и с чем они связанны, но это не суть дела.
Было бы забавно, если бы до сих пор мусолили наработки из КОЛ и вообще контролы.
Период жизни продлился бы, если в основе была классика, а не КОЛ, но не на много.
Закон - есть закон!
Зато была-бы законченная вещь, а то не то ни сё. (Честно говоря, я когда врубился, был крайне разочарован.)
Никто-же не говорит, что delphi7 умерший проект. Нет изменений, и слава богу! Работает - не трогай!

Я гляжу, что ты тоже не хочешь поучаствовать в новых начинаниях и знаю почему.
По пятому пункту везде дела обстоят ещё хуже.
Что имеем не храним потерявши плачем.

Если чё, ругайся на меня.

А что не спишь в такое время?
Это в Москве за полночь, а у тебя вообще!

Редактировалось 4 раз(а), последний 2017-11-18 00:57:28
карма: 5

0
Ответов: 1841
Рейтинг: 123
#8: 2017-11-20 20:17:40 ЛС | профиль | цитата
Продолжаем разговор.
Добавил два компонента, архив перезалил. http://forum.hiasm.com/getfile/38249
Раз компонент lua_HiFunction вызывает кусок схемы, как функцию, то совершенно очевидно, что результаты этой функции хорошо-бы вернуть в программу скрипта.
Компонент setvar может вернуть значение функции в виде значения существующей переменной, либо динамически создать переменную, указанную в компоненте и присвоить ей значение.
(Была идея задавать список имён переменных в компоненте, но это оказалось не удобно.)
Точка doSetvar устанавливает значение переменной, само значение передаётся в потоке, либо с верхней точки, имя задаётся в компоненте.
Чтобы работать с множеством имён переменных существует точка doVarname, куда в потоке подаются имена, а на верхнюю точку данные.

Компонент Getvar, напротив получает значения переменных из "скрипта" для дальнейшего использования в схеме. При этом скрипт и схема могут работать асинхронно.
Думаю, что вопросов возникнуть не должно.

Продолжение следует.

Редактировалось 5 раз(а), последний 2017-11-20 20:48:44
карма: 5

0
Ответов: 1841
Рейтинг: 123
#9: 2018-01-16 00:38:58 ЛС | профиль | цитата
Перезалил архив http://forum.hiasm.com/getfile/38290.
Добавлен компонент lua_HiFunction.
Компонент передаёт аргументы в схему hiasm и возвращает значения в качестве результатов функции.
Бывший компонент lua_HiFunction переименован в lua_HiProcedure. (старый удалить и поставить lua_HiFunction и lua_HiProcedure заново!)

В архиве пример.
Пример достаточно простой, но наглядно показывает гибкость языка.
Каждая строчка листинга прокомментирована, просто надо внимательно посмотреть, как он взаимодействует со схемой.

Примеры http://forum.hiasm.com/getfile/38292

Редактировалось 2 раз(а), последний 2018-01-16 11:52:36
карма: 5

0
Ответов: 1841
Рейтинг: 123
#10: 2018-01-19 00:22:02 ЛС | профиль | цитата
Забавный пример http://forum.hiasm.com/getfile/38295
карма: 5

0
Ответов: 470
Рейтинг: 14
#11: 2018-01-19 20:11:06 ЛС | профиль | цитата
Расскажите подробней, где эти скрипты могут пригодится совместно с хайясмом, кроме игры, вы просто сами изучаете и решили повеселить народ? Вы читали пост ниже.

П. С .Так давайте бросим хайясм и каждый пойдет своей дорогой, начнем изучать разные языки программирования и у нас по одиночке все равно много не получится, блин утопия

Редактировалось 1 раз(а), последний 2018-01-19 20:22:48
карма: 4

0
Ответов: 1841
Рейтинг: 123
#12: 2018-01-20 01:27:08 ЛС | профиль | цитата
Всё просто, видишь не то, - отойди!
По моему разуиению, сначала надо понять, на кой тебе скрипты нужны?
(Вообще, мне кажется, что наблюдается какая-то путаница в этом понятии)
Или Вы спрашиваете, что с ними делать?
Вы читали пост ниже.
Нет!
А где?

А трубку, лучше не курить! Не красит.

Редактировалось 5 раз(а), последний 2018-01-20 03:40:02
карма: 5

0
Ответов: 470
Рейтинг: 14
#13: 2018-01-20 03:44:43 ЛС | профиль | цитата
Например, я запускаю не программу, а оболочку с кнопкой и ссылкой на скрипт который нужно выполнить, и прога делает то, что написано в скрипте в тексте. Вот дописал и прога выполнила еще одно действие
Вот ссылка http://forum.hiasm.com/topic/66491 меня так ни кто и не понял. История, я в этой тупорлыке писал большую программу, и она загружалась минут 5, и придумал в коде программы оставить почти , только кнопки, а остальной код читать с файла и все четко работало, я спрашиваю, ваш может это сделать и пример

Редактировалось 4 раз(а), последний 2018-01-20 04:26:23
карма: 4

0
Ответов: 1841
Рейтинг: 123
#14: 2018-01-20 05:12:44 ЛС | профиль | цитата
Ну ты меня добьёш!
Давай сделаем так, посмотрим что не так, но и ты должен сказать, что не так.
Но завтра.
Завтра, завтра, не сегодня!!!
Так лентяи гопорят!
карма: 5

0
Ответов: 4744
Рейтинг: 530
#15: 2018-01-20 05:28:09 ЛС | профиль | цитата
Брэк ребята, скрипты нужны т.к облегчают жизнь. Вот вам и пример для размышления (в прищепке), правда сырой пока ещё...
карма: 6
0
файлы: 1WMPlayer.zip [132.6KB] [414]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)