Snusmumriken
Ты мог видеть что-то о веб-фреймворке под названием React, где есть контейнеры которые реагируют на изменения других контейнеров.
Это эксель.
Tony
Snusmumriken
Да, я как раз читал )
Snusmumriken
Мы в вузе по преколу делали на экселе game-of-life как лабу.
Snusmumriken
Вообще оно было в виде обучения макросам, поэтому там было два буфера и макро по копированию результатов из блока с формулками в блок отображения
Ruslan
Ruslan
Както пробовал через pipe в качестве инпута протолкнуть видео нл не вышло - оно сначало запихивало весь ролик а только потом начинало обработку. Возможно там нужно было както хитро извернуться но у меня не мозгов не хватило на эту затею)
Vyacheslav
Ruslan
Константин
Константин
Кто хотел тот и набежал, нет?
Snusmumriken
Роблоксеры блин
Hello, World! 🎄
Да кто этот роблок ваш, то ли движок, то ли игра.
Постоянно слышу про эту фигню.
Константин
Константин
И зарабатывать на донатах с этих же детей
Hello, World! 🎄
Ruslan
Ruslan
Ruslan
может я хочу HEVC
8k под досом
HDR
Vyacheslav
ну началось перебираение
Вилби
Как сделать встройку Си в прогу на Lua?
Igor
Как сделать встройку Си в прогу на Lua?
Два варианта: FFI и написание сишной библиотеки. Первый самый простой, для второго надо качать исходники lua, собирать dll'ку (или so/dylib), экспортирующую функцию luaopen_названиесуперлибы ну и дальше через require её подключать. На гитхабе поройся, там дохрена примеров сишных библиотек для Lua.
Вилби
Snusmumriken
https://pastebin.com/Ag07yDKS
Денис
Igor
Igor
Если человек задаёт такой вопрос, значит он уже знаком как с Си, так и с линковкой библиотек и по этому опускаю этот шаг, дабы не писать войну и мир. В конкретном случае человека интересовало как писать сишные модули для Lua, я его направил в место, где он может найти эту информацию.
Денис
На сях наверняка все как-то попроще, хотя наверно со строками тоже повозиться придется, ибо Lua не обозначает строки, но чаще всего там UTF8 вращается, а в винде, например - widechar. Я кстати пробовал писать одну и ту же либу на PureBasic и FreeBasic. либа была прокладкой между обычной CDECL со всеми вытекающими в виде wchar_t. И оказалось таки, что на пурике со строками как-то стабильнее и проще. На фрибесике пришлось писать класс, который через kernel32 перекодировал, но оно то работало, то крешилось. В общем, GCC в данном случае не сработал)))
Vladislav
Привет! Слушайте, есть какой-нибудь софт, пакующий многомодульный луа скрипт в сингл луа файл? Для LuaJIT, без модулей на LuaC? То есть, просто много луашек, связанных между собой require'ами
ㅤ
ㅤ
ㅤ
Есть и другие, гуглятся на английском.
Вообще, там ничего сверхъестественного нет, можно посмотреть, что делает, и написать самостоятельно, если не устроит.
Egor
Vladislav
что пишешь? )
cli'шку одну, на argpars'e, когда он помещался в один файл было удобно. А теперь там 15 модулей 🙁
Snusmumriken
На сях наверняка все как-то попроще, хотя наверно со строками тоже повозиться придется, ибо Lua не обозначает строки, но чаще всего там UTF8 вращается, а в винде, например - widechar. Я кстати пробовал писать одну и ту же либу на PureBasic и FreeBasic. либа была прокладкой между обычной CDECL со всеми вытекающими в виде wchar_t. И оказалось таки, что на пурике со строками как-то стабильнее и проще. На фрибесике пришлось писать класс, который через kernel32 перекодировал, но оно то работало, то крешилось. В общем, GCC в данном случае не сработал)))
Луа не обозначает строки потому что внутрях они точно такие же как в сях.
Внутри файла они в той кодировке в которой файл.
Снаружи они в той кодировке откуда пришли снаружи.
Snusmumriken
Лично меня например наоборот дико бесит обязательность кодировки в каком-нибудь питоне, и связанные с этим баги.
Например я такой сидел и спокойно пользовался cefpython'ом на второй версии, и спокойно вешал колбеки на принимаемые от сетвера байтики чтобы загонять результаты запросов куда надо. А потом по техническим причинам пришлось обновиться на третью версию и начало-о-ось — ошибочная автоматическая конверсия в юникод, с вытравливанием всего не-юникодного из байтовых данных какой-нибудь картинки или pdf-ки, и полная неработоспособность этих колбеков.
Snusmumriken
С байтиками всё всегда почему-то гораздо проще. Есть байтики и функции для работы с юникодом например. Ничего само по себе не портится, только от твоих действий, и класс ошибок "разработчик либы загнал в юникод загнал байты и теперь всё попортилось" исключён в принципе.
Tony
Impostor
Cyberpunk enjoyer
Добрый вечер всем, не можете подсказать как работает require в луа?
Snusmumriken
Добрый вечер всем, не можете подсказать как работает require в луа?
Ну так-то оно проходит по элементам package.path/cpath + LUA_PATH/CPATH из окружения, заменяет ? в строчках на имя модуля, заменяет . на разделитель текущей системы и так далее, и для каждой строчки вызывает функцию в package.loaders. Первое что вернёт первая же функция есть загруженный модуль.
Ruslan
Ruslan
Втч расширение dll пробует
Cyberpunk enjoyer
Cyberpunk enjoyer
Возможно ли сделать к нему "библиотеки" которые тоже из памяти загрузить?
Snusmumriken
А если скрипт загружен в памяти, а не из файла?
А, ну предварительно смотрит в package.preload и package.loaded на предмет вызываемого скрипта. Если оно есть там — загружает вне очереди, и то что подгружено loaders'ами отправляет в loaded как кеш.
Ruslan
Cyberpunk enjoyer
что за извращения?
Для User Experience, я имею для пользователей расширение скриптами, скрипты качаются с Клауда, и запускаются, но пользователи хотят пользоваться библиотеками.
Увидел что в других продуктах используется require "product/lib_name", поискал на просторах интернета как такое реализовать не нашёл, поэтому и обратился к вам.
Cyberpunk enjoyer
Snusmumriken
С извращениями и не из памяти.
Cyberpunk enjoyer
Snusmumriken
А в чём проблема выдать юзерам простой обычный require позволяющий реквайрить сишное?
А ты ли сам делаешь игру? А можешь предоставить юзерам мод апи?
Ruslan
Cyberpunk enjoyer
поэтому как они будут вызывать я не знаю, я думал что подобную модульность луа поддерживает с коробки
Cyberpunk enjoyer
Cyberpunk enjoyer
Ruslan
Ruslan
Тоесть в зависимости у тя переменная my_const
Выполняешь код
После чего выполняешь код который юзает переменную из первого кода
Ruslan
Это все конечно костыли
Cyberpunk enjoyer
Да, но решение которое предложили выше мне кажется самое удобное
Cyberpunk enjoyer
и можно сказать без костылей
Ruslan
Согласен
Aydar
Понял, разобрался.
Большое спасибо всем за помощь)
Из изначального сообщения не очень понятно в каком виде у тебя библиотека в памяти, если она в виде lua таблицы то можно эту таблицу добавить в глобальную таблицу _LOADED, ну а если библиотека в виде строки то выше уже подсказали.
Snusmumriken
Cyberpunk enjoyer
Библиотеки по подписке звучат забавно )
Согласен, но не платные, а просто добавить, и у тебя в библиотеке есть, зашёл прописал require, и пользователи сами себе апи мода расширили.
Cyberpunk enjoyer
Snusmumriken
С библиотеками в целом и с сишными в частности может быть одна маленькая проблема, под названием "блокирующие операции". В случае если это мод для игры, особенно если он крутится на сервере — может произойти жесть вплоть до полной остановки сервера, плюс если либы сишные — можно очень даже хакнуть сервер ))
Cyberpunk enjoyer
Cyberpunk enjoyer
LoadLibrary методом
Snusmumriken
Хорошо, если юзер парализует себя тут как бы ничего страшного.
Но если у него есть доступ к ядру игрули, он такой может взять и накатать бота с полным доступом ко всему игровому окружению. Аимботы-волхаки и прочая ерунда, фарм-машины и всякое такое интересное.
Ruslan
Что за игра