Программа для редактирования lua файлов
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
Это руководство призвано исполнить две цели: обучить разработке скриптов с нуля и восполнить все пробелы в знаниях о Lua скриптинге под MoonLoader. В нём освещены все аспекты разработки - от самого простого до продвинутых возможностей и приемов, то есть оно подходит как и для начинающих скриптеров, так и для программистов с опытом. Предварительное прочтение старого руководства не требуется, здесь есть вся необходимая и более актуальная информация.
А если вы всё ещё не знакомы с MoonLoader, то сейчас самое время ознакомиться.
Ну что, приступим?
Перед продолжением необходимо установить сам MoonLoader, желательно через программу установки и с дополнительными инструментами:
1. Скачайте установщик MoonLoader последней версии и запустите, следуйте шагам программы установки
2. На странице выбора компонентов отметьте нужные скрипты (рекомендуется выбрать все)
3. Если вы намерены делать скрипты для SA:MP, выберите SAMP.Lua и отдельно установите SAMPFUNCS
4. Это не обязательно, но не помешает установить и MoonAdditions - эту библиотеку используют некоторые скрипты и она неплохо расширяет стандартные возможности скриптинга
5. Выберите установку расширения для Notepad++, если вы будете использовать программу Notepad++ для редактирования Lua скриптов
Для лёгкой и удобной работы с кодом Lua скриптов вам понадобится настроить для себя среду разработки. Для работы с Lua достаточно любого текстового редактора, но какой-нибудь блокнот Windows для этого подходит совсем плохо, поэтому лучше использовать специализированные программы. На текущий момент полная поддержка MoonLoader есть в Atom и Notepad++, помимо этого есть пользовательские дополнения для Visual Studio Code и Sublime Text.
После установки этого пакета вам будет предложено установить дополнительные пакеты, соглашаемся и забываем про это.
Проект по-умолчанию.
В меню File выбираем пункт Open Folder. и указываем путь до папки moonloader, после этого она откроется как проект.
Кодировка по-умолчанию.
Для установки кодировки по-умолчанию при создании нового скрипта переходим в настройки всё тем же сочетанием Ctrl + , и выбираем пункт Core. В поле File Encoding выбираем Cyrillic (Windows-1251).
Проект по-умолчанию.
Как и в Atom, здесь есть возможность показа меню проекта, а точнее "Папка как Проект". В меню "Файл" выбираем пункт "Открыть Папку как Проект" и указываем путь к папке "moonloader".
Кодировка по-умолчанию.
Над лентой выбираем пункт Опции и переходим в Настройки. В меню слева выбираем пункт Новый документ и в разделе кодировки ставим флажок на список, в котором выбираем кодировку Windows-1251
MoonLoader основан на языке программирования Lua, знание хотя бы основ которого обязательно для дальнейшей работы. Поскольку Lua очень популярен в среде разработки игр и других сферах, по нему полно учебных материалов. Ниже приведено несколько ресурсов, позволяющих изучить Lua от корки до корки. Не стоит пренебрегать этими уроками даже более опытным разработчикам, зачастую можно найти для себя много нового. Имейте в виду, что в MoonLoader используется LuaJIT - Lua 5.1 с некоторыми фичами Lua 5.2 и своими дополнениями, поэтому некоторые мелочи из этих материалов будет неприменимы в MoonLoader.
После установки среды разработки, изучения основ Lua и ознакомления с документацией MoonLoader, можно приступать от теории к практике. Давайте сначала рассмотрим самое основное, на всякий случай.
Глобальная область
Глобальная область - это основное тело скрипта, т.е. всё, что находится вне функций. В основном глобальная область используется для указания директив, подключения модулей, объявления каких-либо глобальных переменных и функций. Она выступает первым этапом загрузки скрипта, код из неё выполняется один раз после загрузки скрипта (а скрипты загружаются почти сразу же после запуска игры) и не может быть приостановлен. Основная работа со скриптом производится в потоке main.
Пример: Загружаем библиотеку VKEYS, записываем моё имя в переменную myName, объявляем функцию main.
Задержки и потоки
Задержка в скрипте позволяет приостанавливать исполнение кода на указанное количество миллисекунд или на один кадр. В ML для осуществления задержек используется функция wait(int time), её аргумент time принимает следующие значения:
-1 - устанавливает непрерывное ожидание, использование допустимо только в main
0 - задержка на один кадр
остальные значения указывают задержку в миллисекундах
Пример: Запущенный скрипт будет в вечном ожидании
Использование задержек недопустимо в callback-функциях. Для создания задержки в такой функции используйте создание потока:
Потоки - это сопрограммы, которые могут быть созданы в процессе работы скрипта для параллельного выполнения задач. Потоки в MoonLoader служат для выноса определенных действий за рамки основного потока, а так же для создания задержек выполняемого кода там, где это невозможно реализовать стандартными методами.
Для запуска потока используются функции lua_thread.create и lua_thread.create_suspended.
Пример: создаётся два потока для параллельного вывода текста в лог
Директивы
Скрипты для MoonLoader могут содержать о себе некоторую информацию и иметь определённые свойства исполнения - и то, и другое задаётся с помощью директив. Директивы - это обычные функции, предназначенные для указания информации о скрипте и изменения его поведения. Их принято обозначать в самом начале скрипта.
Все параметры, задающиеся директивами, можно получить из любого скрипта, обратившись к соответствующим полям класса LuaScript.
Пример:
В этом примере показаны не все директивы, за полным списком обращайтесь к соответствующей странице на вики.
Колбэки (функции обратного вызова) выступают реакцией на действие и по концепции очень похожи на события, но у них есть два отличия: первое - колбэк всегда регистрируется явно, чаще путём вызова функции с передачей функции-колбэка в качестве аргумента, второе - он всегда связан с какой-либо сущностью (командой, идентификатором и т.п.), т.е. будет вызван только если возникшее событие касается связанной сущности (например, колбэк команды будет вызван при вводе только одной команды, а не каждой, как это было бы с событием). Примером функции с колбэком является downloadUrlToFile, принимающая последним аргументом callback-функцию.
В колбэках, как и в событиях, нельзя использовать задержки.
Пример:
Использование библиотек
Библиотеки, либо модули всячески дополняют стандартный набор возможностей новыми и позволяют использовать в скриптах готовые инструменты для разработчиков. Модули делятся на стандартные и сторонние. Стандартные включены в дистрибутив MoonLoader и не требуют отдельной установки.
Все модули располагаются в директории moonloader/lib/ и устанавливаются туда же. Подключение библиотек осуществляется при помощи функции require, которая в качестве аргумента принимает название файла. Чаще всего подключение модулей производится в начале скрипта, но может быть выполнено в любом месте. Каждый модуль загружается отдельно для каждого скрипта.
Пример: Подключим модуль "vkeys", позволяющий работать с виртуальными клавишами.
Работа с модулями не ограничивается стандартным набором, часто приходится иметь дело со сторонними модулями - такие модули не поставляются вместе с MoonLoader и требуют ручную установку. Примерами таких модулей являются Dear ImGui и SAMP.Lua.
Вы можете создать собственный модуль и использовать его в своих скриптах. Благодаря этому вам будет легче оказывать им поддержку, скрипты станут чище и компактнее, а повторяющегося кода будет намного меньше.
Помимо этой возможности в MoonLoader присутствует система импорта, позволяющая использовать работающий скрипт как модуль с общим доступом - об этом и о создании модулей будет сказано позже.
Настоятельная рекомендация: никогда не публикуйте свои работы вместе со стандартными библиотеками или с изменениями в сторонних библиотеках - это может привести к проблемам у пользователей.
Несмотря на обилие информации в теме, знать всё невозможно, поэтому чаще заглядывайте на Wiki, а также не забывайте о теме Вопросы на Lua скриптингу, где вам смогут помочь при возникновении сложностей.
Больше информации именно по Lua лучше искать в поисковиках, язык довольно простой и если эта тема вам никак не помогла - стоит поискать более углубленные уроки.
- Добавляйте информацию о скрипте при помощи директив
- Соблюдайте единый стиль кода
- Соблюдайте табуляцию (отступы)
- Отделяйте блоки кода логически: пустые строки между функциями и блоками переменных, пробелы между блоками кода, осуществляющими логически завершённое действие и т.д.
- Называйте переменные и функции внятными именами
- Комментируйте неочевидные участки кода
Современные решения
С момента релиза ML прошло уже довольно много времени и, конечно, многое поменялось, так, например, вместо предопределенных переменных playerPed и playerHandle стоит использовать PLAYER_PED и PLAYER_HANDLE соответственно.
Помимо стандартного рендеринга, для создания сложных меню можно использовать фреймворк Dear ImGui. Для удобной обработки сетевого трафика SA:MP есть библиотека SAMP.Lua. Библиотека SA Memory для прямого взаимодействия со структурами игры. И MoonAdditions, добавляющая множество интересных функций.
vkeys - стандартный модуль, хранящий все ID и имена виртуальных клавиш. Так уж вышло, что этот модуль изначально не входил в состав MoonLoader и вместо него все константы загружались из модуля moonloader глобально, но со временем выяснилось, что это было плохим решением и поэтому коды клавиш были перенесены в отдельный модуль с немного другой реализацией. Но константы в старом модуле пришлось оставить для совместимости со старыми скриптами и теперь их использование оттуда считается устаревшим. Библиотека vkeys тут приведена в качестве примера, кроме неё были и другие нововведения, приведшие к устареванию старых решений.
Поэтому, если вы занимаетесь активной разработкой, всегда обращайте внимание на список изменений в обновлениях и пользуйтесь новейшими инструментами.
Упрощение процесса установки скриптов
"Да закинь вот эти файлы в папку CORE в папке SOURCE та что в папке с либами где под папкой IT хранится SCORE" - Бррр, чтобы подобное не случалось и ваш собеседник не впадал в ступор, старайтесь упростить установку до максимума - чтобы можно было просто скопировать все составляющие мода в одну папку. То есть соберите один архив так, чтобы неопытный пользователь мог свободно его установить или приложите инструкцию, если процесс установки сложнее стандартного. Чем установка проще, тем лучше и для вас, и для пользователя.
Компиляция скриптов
Во многих других языках программирования выполнение компиляции необходимо для запуска приложения на целевой машине, но в Lua компиляция не требуется - скрипты загружаются из исходного кода без дополнительных манипуляций. Однако, компиляция Lua скриптов возможна и чаще всего применяется для сокрытия исходного кода от любопытных глаз. Чаще всего это применяют для продаваемых скриптов, где защита этого самого скрипта - дело первостепенной важности. Не стоит злоупотреблять этой возможностью и прятать каждый свой скрипт под замок.
Для компиляции Lua скриптов под MoonLoader v.026 и выше скачайте интерпретатор LuaJIT v2.1.0-beta3, распакуйте архив в любое место и перетаскивайте lua-файл на compile.bat, рядом создастся luac-файл - это и есть скомпилированный скрипт. Для компиляции скриптов под более старые версии MoonLoader, вам понадобится LuaJIT 2.0.4.
С основными принципами разработки вы теперь знакомы и при этих знаниях сможете выполнить большинство задач, однако некоторые задачи требуют применения специальных техник. Давайте рассмотрим некоторые из них.
Создание модулей
Модули делятся на два типа: Lua и DLL. Lua-модули пишутся, как вы уже могли догадаться, на языке Lua и в результате представляют из себя привычные Lua-скрипты, только с некоторыми особенностями.
Давайте рассмотрим пример простого модуля, назовём его example:
To discuss openly about LuaEdit , feel free to use our designated forums and/or trackers on SourceForge.
LuaEdit 2010 3.0.10 has been released. This mainly fixes two major bugs: The check syntax command not working anymore and debugging scripts with embedded for loops.
LuaEdit 2010 3.0.9 Released
Posted on 03.29.2012 by Jean-Fran�ois Goulet
In this release of LuaEdit 2010 , we brought major changes in our licensing. While the client-side (the IDE itself) will remain licensed under GPL, the server-side (the actual debugger) will be licensed under LGPL to allow for redistribution of commercial products with the debugger.
Also, LuaEdit 2010 is now connected to a MySQL database to allow checking for updates and logging data in crash reports to target bugs faster and more efficiently.
Finally, in the next release, we should have a fixed version of our rdbg*.lib static libraries in regards to crashes associated with memory mis-alignment due to differences in the size of lua_State struct between LuaEdit's version and native Lua's version.
LuaEdit 2010 3.0.8 Released
Posted on 01.31.2012 by Jean-Fran�ois Goulet
This release of LuaEdit 2010 mainly target bug fixes. If you had a bug in one of our previous releases, chances are it is fixed in 3.0.8. If not, please let us know using our bug tracker system.
LuaEdit goes 64-bit with 3.0.7
Posted on 12.13.2011 by Jean-Fran�ois Goulet
LuaEdit 2010 3.0.7 has been released. The release has no new features and no bug fixes. It is simply a symbolic release to mark the starting point of the 64-bit portability of LuaEdit 2010 . From now on, LuaEdit 's binaries will always be available in both 32-bit (x86) and 64-bit (x64) version.
LuaEdit 2010 3.0.6 Released
Posted on 12.13.2011 by Jean-Fran�ois Goulet
LuaEdit 2010 3.0.6 has been released. This version features support for Lua 5.2 debugging, making LuaEdit 2010 the first debugger to officially support Lua 5.2. Visit our History page for a complete listing of new features and bug fixes.
LuaEdit 2010 3.0.5 Released
Posted on 11.27.2011 by Jean-Fran�ois Goulet
LuaEdit 2010 3.0.5 has been released. Visit our History page for a complete listing of new features and bug fixes.
LuaEdit 2010 3.0.4 Released
Posted on 11.11.2011 by Jean-Fran�ois Goulet
LuaEdit 2010 3.0.4 has now been released. Among some of the new features, you will find that we have added a new symbol parsing system that allows for code completion / autolist. Visit our History page for a complete listing of new features and bug fixes.
LuaEdit 2010 3.0.3 Released
Posted on 10.25.2011 by Jean-Fran�ois Goulet
LuaEdit 2010 3.0.3 has been released. Visit our History page for a complete listing of new features and bug fixes.
LuaEdit 2010 3.0.2 Released
Posted on 10.10.2011 by Jean-Fran�ois Goulet
LuaEdit 2010 3.0.2 has been released. This version features "Set next statement" (via drag'n'drop), syntax coloring settings and "Find in files". Visit our History page for a complete listing of new features and bug fixes.
LuaEdit moves to SourceForge!
Posted on 05.27.2011 by Jean-Fran�ois Goulet
LuaEdit 2010 pre-alpha released!
Posted on 09.06.2009 by Jean-Fran�ois Goulet
After many hours of hard work, LuaEdit 2010 has finally reached a point in its development where it is stable enough to be released to the public.
This version of LuaEdit 2010 is certainly not final, since many features are not yet available. For a brief list of these features, you may consult the project task list on LuaForge.
This version features both local and remote debugging, solution/project management, breakpoints, bookmarks, locals and output streaming. We hope you will enjoy what you see in this early release of LuaEdit 2010 .
We have many plans for future versions of LuaEdit 2010 and unlike many other Lua IDEs, LuaEdit strives to remain a free software. Your contribution to the project would be greatly appreciated. By providing us feedback, suggestions and bug reports, you play a very important role in the software's development.
LuaEdit gets a whole new look
Posted on 06.24.2008 by Jean-Fran�ois Goulet
We are proud to announce today LuaEdit's next version: LuaEdit 2010 .
This version will support the latest release of Lua (5.1.3) and will include the following new features: remote debugging, easy software integration and solution oriented management. It will also include almost all previous features, such as syntax highlighting, code completion, locals, variable watch, etc. LuaEdit 2010 is still under developpment, so if you have any suggestions to make, please do so before the release by using our Contact Us section.
Или IntelliJ IDEA + EmmyLua
Дело вкуса. Но idea тормоз, особенно при глобальном поиске.
А как сделать, чтобы в visual stidio code кириллица нормально отображалась? А то у меня ромбики вместо букв.
Цитата |
---|
Вася написал: А как сделать, чтобы в visual stidio code кириллица нормально отображалась? А то у меня ромбики вместо букв. |
Цитата |
---|
Вася написал: А как сделать, чтобы в visual stidio code кириллица нормально отображалась? А то у меня ромбики вместо букв. |
Установить в настройках кодировку по умолчанию win1251.
Можно только для рабочей зоны, можно доля всех файлов lua. По желанию.
Очень спорное утверждение. Почему не Vim или Emacs?
Notepad++?, если речь про него, хорош если быстренько открыть водном файле, посмотреть, закрыть.
Он не поддерживает кодировку Win1251. Квик же в 2022 только ее понимает.
Правда для ZeroBrane можно скрипт на том же lua для перекодировки при открытия файла настроить. Но это не лучший вариант. Часто файлы потом не открываются вообще.
Это проверенная временем программа, полностью устраивает, есть дополнительные функции, просто удобно. Многие смотрел, для Lua самое то
Я установил visual stidio code + plugins:
Написал простой код, нажимаю F5 и вылезает ошибка: The 'cwd' can not be resolved in a multi folder workspace. Solution: "cwd": "$"
Здесь уже советовали пользоваться блокнотом - его ещё не успели основательно изуродовать, хотя и он всё чаще норовит писать в юникоде. Лично я много лет пользуюсь встроенным редактором Far Manager и примерно столько же лет ничего лучшего просто не ищу. Он даже подсвечивает переменные, открывающие и закрывающие скобки (в т.ч. операторные), если файл имеет расширение .lua, но это мелочь. А вот то, что там макросы есть.
Цитата |
---|
nikolz написал: SciTe - написан на луа, есть встроенный компилятор и отладчик |
От SciTe у меня лично глаза болят. Слишком контрастные цвета (я темную тему поставил). А в настройках я так и не смог найти как изменить цветовое оформление.
Цитата |
---|
SciTe - написан на луа, есть встроенный компилятор и отладчик |
Убийственная характеристика редактору! Лучше помню только фразу Кернигана из статьи "Почему Паскаль не является моим любимым языком программирования": "Три из четырёх известных мне компиляторов с Паскаля написаны на Си".
Цитата |
---|
SciTe - написан на луа, есть встроенный компилятор и отладчик |
Видно, что Вы не в теме.
У Вас получается типа - "кина не видел, но считаю , что говно"
---------------------------
На луа написан не только редактор но и многие игры а также системы управления нефтяным оборудованием и приборами (Собственно для этого его и создавали изначально).
-----------------
Так как SciTe написан на луа, то пользователь может легко добавить свои плюшки и быть до . счастливым и радостным.
Цитата |
---|
SciTe - написан на луа, есть встроенный компилятор и отладчик |
специально для Вас из Вики:
--------------------------------
По идеологии и реализации язык Lua ближе всего к JavaScript , в частности, он также реализует прототипную модель ООП , но отличается паскалеподобным синтаксисом и более мощными и гибкими конструкциями. Характерной особенностью Lua является реализация большого числа программных сущностей минимумом синтаксических средств. Так, все составные пользовательские типы данных ( массивы , структуры , множества , очереди , списки ) реализуются через механизм таблиц, а механизмы объектно-ориентированного программирования , включая множественное наследование — с использованием метатаблиц, которые также отвечают за перегрузку операций и ряд других возможностей.
Lua предназначен для пользователей, не являющихся профессиональными программистами, вследствие чего большое внимание уделено простоте дизайна и лёгкости обучения. Язык широко используется для создания тиражируемого программного обеспечения (например, на нём написан графический интерфейс пакета Adobe Lightroom ). Также получил известность как язык программирования уровней и расширений во многих играх (в том числе Garry's Mod ) [10] .
nikolz, Да на кой мне Вики, если я сам на нём больше года программирую? И я уже несколько раз говорил, что я чуть ли не единственный на этом форуме, кто программирует на чистом Lua, так что это ВЫ "не в теме", это У ВАС получается типа - "кина не видел, но считаю, что конфетка". Мне плевать, что там "на луа написано" и для чего его и "создавали изначально", язык - ГОВНО! Редкостное говно! Динамическая типизация, убийство типа integer, кастрированный goto. ЧАВО?! Она по сравнению с JS "отличается более мощными и гибкими конструкциями"?! Это какими ж такими? Огласите весь список, пжалста!
Не "реализация большого числа программных сущностей минимумом синтаксических средств", а эмуляция этих сущностей через жо. через механизм key-value, который с какого-то бодуна регулярно обзывают "таблицами". Вот что "Lua предназначен для пользователей, не являющихся профессиональными программистами" - верю безоговорочно: ни один программист ТАКОГО говна написать не в состоянии! Ах, да - я ведь чуть ли не сразу после появления на этом форуме писал:
29.09.2020 10:31:16
Убрать тип integer из языка, на мой взгляд, есть самая большая дурость. Ладно, бог с ним, с никому не нужным boolean - пусть будет, если нравится, но с целочисленными переменными я за долгие годы программирования (а я уже пенсионер!) работал раз в 10 чаще, чем с вещественными! Если не во все сто.
Ну вот, по Вашей ссылке, первым же предложением: "Tables in Lua are not a data structure; they are the data structure. All structures that other languages offer---arrays, records, lists, queues, sets---are represented with tables in Lua". Иными словами, никаких структур данных просто НЕТ! Печально. А уж "обоснование" и вообще курам на смех: "Хотя мы МОЖЕМ (!) реализовать массивы и списки, таблицы мощнее. Многие алгоритмы упрощаются до тривиальности с использованием таблиц" . И дальше вообще издевательство: "Например, вы редко пишете поиск в Lua, потому что таблицы предлагают прямой (. ) доступ к любому типу" . Ребятки, доступ по ключу - это не прямой, а как раз КРИВОЙ доступ к данным! Даже если обозвать ключи "индексами". Уши бы надрать этому "Роберто Иерусалимскому!
В общем, с языком почти всё ясно: граф (точнее, дерево) объектов построить можно, а простейшую таблицу или даже массив - нельзя. Остаётся разобраться со строковыми переменными: способна ли эта loadstring интерпретировать строки как операторы языка (или, скажем, функции), то есть имеется ли здесь техническая возможность программирования данными.
Или, скажем, 25.03.2021 12:28:31
Какие "индексируемые таблицы" - побойтесь Бога! Мне чуть ли не с первого дня стало очевидно, что тут постоянно путают индексы и имена, что является источником многочисленных глюков - в том числе, и в основном ПО Квика (таблица заявок, я об этом не раз писал). Язык отвратителен, и только за убийство типа integer и замену его на вонючий "тип number" создателей нельзя подпускать к компу ближе, чем на километр - об этом и о многом другом я тоже писал. Как и о том, что синтаксис, про который Вы здесь соловьём заливаетесь, вообще не имеет значения - профессионалу всё равно, на каком языке писать, была бы обеспечена требуемая функциональность.
Для справки: все эти "далеко ушедшие вперёд" неучи, которыми написана заметка в Вики, на которую здесь давалась ссылка, всё-таки в курсе, что элементы строки не обязательно байты, но, судя по всему, ВААПЩЕ без понятия, что строки могут быть НЕ ТОЛЬКО текстом, что это именно АЛГОРИТМИЧЕСКОЕ понятие (и пофиг какая у них конкретная реализация): строки событий или, скажем, мультиязычные строки для них тайна за семью печатями. Или что тривиальная буферизация файловых операций даже при работе с текстовыми файлами читает и пишет, с точки зрения прикладника, именно строками, а обмен с диском при этом происходит массивами (секторами или там кластерами).
Строки НЕЛЬЗЯ "индексировать как таблицы", какие бы не делать "финты ушами": индекс - это НЕ имя, и об этом я тоже писал буквально в первых же своих постах (а Ваш убогий "финт ушами" эмулирует обращение по индексу как массива, а не "как таблицы", и абсолютно бесполезен - разве что для пущего оверхеда).
Цитата |
---|
Вася написал: А как сделать, чтобы в visual stidio code кириллица нормально отображалась? А то у меня ромбики вместо букв. |
это тот самый Notepad который каждый раз перед его использованием просит его снова переустановить ? Ну тогда лучше остатья пользователем старенького и известного всем блокгнота - нервы целее будут чем при использовании вашего Notepad
Не "реализация большого числа программных сущностей минимумом синтаксических средств", а эмуляция этих сущностей через жо. через механизм key-value, который с какого-то бодуна регулярно обзывают "таблицами".
29.09.2020 10:31:16
Убрать тип integer из языка, на мой взгляд, есть самая большая дурость. Ладно, бог с ним, с никому не нужным boolean - пусть будет, если нравится, но с целочисленными переменными я за долгие годы программирования (а я уже пенсионер!) работал раз в 10 чаще, чем с вещественными! Если не во все сто.
Ребятки, доступ по ключу - это не прямой, а как раз КРИВОЙ доступ к данным! Даже если обозвать ключи "индексами". Уши бы надрать этому "Роберто Иерусалимскому!
Какие "индексируемые таблицы" - побойтесь Бога! Мне чуть ли не с первого дня стало очевидно, что тут постоянно путают индексы и имена, что является источником многочисленных глюков - в том числе, и в основном ПО Квика (таблица заявок, я об этом не раз писал). Язык отвратителен, и только за убийство типа integer и замену его на вонючий "тип number" создателей нельзя подпускать к компу ближе, чем на километр - об этом и о многом другом я тоже писал. Как и о том, что синтаксис, про который Вы здесь соловьём заливаетесь, вообще не имеет значения - профессионалу всё равно, на каком языке писать, была бы обеспечена требуемая функциональность.
Попробую объяснить Ваши заблуждения, но скорее не для Вас, а для начинающих.
-----------------------------
1) Луа - это скриптовый язык и он имеет вполне определенною область применения.
Подобно микроскопу, который можно применять и в качестве молотка для забивания гвоздей, но не так эффективно.
---------------------------
Назначение чистого луа - это быстрое и простое тестирование идей и алгоритмов, создание диалоговых интерфейсов для устройств и программ.
Т е чистый луа -это инструмент для быстрой разработки программ взаимодействия компьютера и человека.
-----------------------------
Все функции в библиотеках Луа написаны на чистом СИ, поэтому они работаю быстро.
-------------------------------
Для реализации более сложных и быстродействующих задач предназначен язык СИ и API C for Lua.
===================
Создание торговых роботов в КВИК - это задача создания систем реального времени.
В реализации этой системы условно можно выделить три задачи.
----------------------
1 задача, это интерфейс с человеком. И эту задачу легко и эффективно решать на чистом Луа.
-----------------------
2 задача, это задача взаимодействие робота с биржей , сервером брокера и терминалом QUIK.
Эту задачу разработчики реализовали на СИ в виде библиотеки QLUA. т е программ на чистом СИ взаимодействующие с VM Lua через API C for Lua.
-----------------------
3 задача, это разработка и реализация алгоритма работы робота.
Не сложно понять, что наиболее эффективно этот алгоритм можно реализовать лишь на СИ, т е как задачу 2.
Но дело в том, что пользователи Луа не есть профессиональные программисты.
Но Луа позволяет им тоже заняться творчеством и написать собственные, пусть и не оптимально реализованные алгоритмы.
--------------------
Поэтому ранее я Вам пытался объяснить, что на чистом луа сложные алгоритмы пишут, либо профи для быстрой реализации идеи, чтобы ее протестить,
либо чайники , которые горды собственным невежеством и не сомневаются в собственной гениальности.
================
Теперь объясню немного Ваши заблуждения относительно реализации Луа внутри.
Судя по Вашим гневным рассуждениям, Вы не разбирались в исходниках VM Lua.
-----------------------------
Все переменные (кроме данных в таблицах) имеют именно прямой доступ. Они представляют собой структуры
В этой структуре есть 32 бит (или 64 бит) слово, которое содержит целую, вещественную, булев. переменные. а также указатель на таблицу или функцию.
Если Вы используете API C for Lua, то Вы получаете прямой доступ к ним.
Замечу, что указатель - это и есть любимое Вами целое.
---------------
Но для чайников эти возможности, по вполне понятным причинам, недоступны на чистом Луа. Доступ чайникам к целому типу в версиях 5.3 создало кучу вопросов на этом форуме.
Так как чайник не читает документации - потому что он чайник .
----------------------
Теперь про Выши гневные опусы о строках текста.
В луа строки текста заменяются изначально на их хеш - 32(64) любимое Вами целое число .
А далее, во всей вашей программе , где вам надо сравнивать сортировать строки, участвуют не строки, а эти числа. Т е обработка строк происходит также быстро как обработка целых чисел.
Ну и где Вы видели более компактное и эффективное решение?
-----------------------
В итоге, если вы присвоите элементу таблицы имя , то луа сделает для него целое число- хэш и далее для извлечения этого элемента будет использовать это целое как индекс в массиве.
====================
Не буду более рассказывать об интересных и эффективных решениях в VM Lua. Кому интересно, читайте исходники.
==========================
В результате - Луа самый компактный и быстрый из скриптовых языков. Его легко встраивать в любые системы, в том числе и на одном чипе.
Конечно, есть множество языков программирования и каждый из них создавался для определенных задач и имеет определенную область эффективного применения.
=========================
И в завершение моего ликбеза, замечу, что в КВИК встроили луа именно для расширения интерфейса для пользователя, а не для создания торговых роботов.
------------------------
Поэтому не стоит на зеркало пенять.
Добрый день! Помогите пожалуйста. Каким только редактором не пытлся открыть луа файл, но вместо нормального кода какая-то "акракадабра" Что делать.
Чем открыть lua-script
Возник такой вопрос: лазя по просторам своего компа, откопал файл с расширением lua. Конечно.
Как открыть текстовый файл скриптом lua
Привет ребят! Подскажите пожалуйста, как скриптом 'lua' открыть текстовый файл? не io.open(), а.
Спасибо, но как этой штукой пользоваться, я скачал, там два файла, но что с ними делать не понятно. Может подскажите пожалуйста?
- там файл лицензии и jar-архив (набор java-классов). т.е. для запуска нужна java. А дальше, полагаю, программа сама подскажет, что делать.
Хм, у меня почему тот файл java не открывается, хотя java есть и ошибки никакой не выдает, просто не запускается - и все.
Добавлено через 5 часов 56 минут
Может есть еще какие-нибудь программы для этого. Подскажите пожалуйста
Спасбо, программа запускается, но там черный экран и курсор, а что дальше делать подскажите пожалуйста?
Спасибо, программа запускается, но там черный экран и курсор, а что дальше делать подскажите пожалуйста?
To use luadec you have to compile it first. Read the following sections for more information
To use the ruby based tools compare and luadecguess you need to have ruby version 1.8 installed on your computer as well
To simply decompile a script run luadec as following:
This should decompile filename.luac to filename.lua
To disassemble a file use the -dis option:
There are some more options, usually for debug purposes, or for cases where the built in local guesser guesses wrong. Use -h to get a complete list of usable parameters
Все прочитал, перевел, но все равно не совсем понял) Можете объяснить совсем для чайника, как делать поэтапно это и куда вставлять сам файл, который нужно декомпилировать и нужно ли вообще его куда-то вставлять?
Все прочитал, перевел, но все равно не совсем понял) Можете объяснить совсем для чайника, как делать по этапно это и куда вставлять сам файл, который нужно декомпилировать и нужно ли вообще его куда-то вставлять?
- Распаковываете архив luadec51_2.0.1_win32_bin
- Запускаете cmd
- Заходите в каталог luadec51_2.0.1_win32_bin
- Заходите в каталог luadec51_2.0.1_win32_bin
- пишите
Скрипт
Пусть файл будет называться 1.lua. Затем я скомпилировал скрипт Compile Lua file
и получил скомпилированный скрипт 1.luac.
Теперь пару скринов для примера.
ОГРОМНОЕ СПАСИБО. Разобрался, получилось вроде, почему вроде, пишет в некоторых строчках вот это: DECOMPILER ERROR: Confused about usage of registers! Так и должно быть или это все таки строчки, которые не расшифровались.
Я попробовал дизассемблировать так как написано в инструкции, которую Вы мне скинули через cmd, и в этом окне, что то явно произошло) т.е. появилось много строк и так далее, возможно и получилось, НО в самой папке нового какого-то файла не появилось только в командной строке cmd все эти записи почему-то.
Я попробывал дисамбелировать так как написано в инструкции, которую Вы мне скинули через cmd, и в этом окне, что то явно произошло) т.е. появилось много строк и так далее возможно и получилось, НО в самой папке нового какого-то файла не появилось только в командной строке cmd все эти записи почему-то.
Lua наследование, lua ооп
Подскажите пожалуйста, как наследовать класс? Не получается выдаёт ошибку local car = <> --.
Как открыть lua-файл?
подскажите пожалуйста как открыть .lua файл на lazarus е выдает ошибку
Чем открыть файл cсv файл в текстовом документе?
чем открыть файл cсv файл в текстовом документе?
- Расширение (формат) - это символы в конце файла после последней точки.
- Компьютер определяет тип файла именно по расширению.
- По умолчанию Windows не показывает расширения имен файлов.
- В имени файла и расширении нельзя использовать некоторые символы.
- Не все форматы имеют отношение к одной и той же программе.
- Ниже находятся все программы с помощью которых можно открыть файл LUA.
Notepad Plus Plus 7.5.8
Многие пользователи MS Windows давно успели заметить, что стандартный блокнот - это довольно неудобная в своем использовании программа. Заменой ей может стать данный бесплатный редактор текстовых файлов, обеспечивающий поддержку синтаксиса большого количества языков программирования. Программа содержит в себе довольно широкий набор опций и отличается минимальным потреблением ресурсов процессора. Программа делает возможным одновременный просмотр нескольких документов сразу и редактирование их, без закрытия лишних окон. Доступной стала и такая опция, как редактирование одного и того же документа в разных местах, что очень удобно.
Notepad2 4.2.25
Notepad2 – простое приложение, позволяющее печатать и редактировать текст. Она поможет в создании HTML-страниц, программировании на различных языках (CSS, Java, JavaScript, Python, SQL, Perl, PHP) так как способна подсвечивать код. Программа построена по принципу простого блокнота, она маловесна и компактна. Этот текстовый редактор проверяет все скобки на наличие пары, поддерживает авто отступы. Программа Notepad2 не только поддерживает кодировки ASCII и UTF-8, но и умеет их конвертировать. Позволяет откатывать нежелательные операции на много уровней назад. Поддерживает блочное выделение элементов текста и имеет нумерованные ст.
Komodo Edit 9.0.1
Komodo Edit - удобный редактор кода, поддерживающий широкий спектр различных языков программирования. Программа дает пользователям возможность работать сразу с несколькими файлами, писать код станет более эффективно с использованием функции автозаполнения, подсказок. Приложение позволяет автоматически выделять переменные при их выборе. С помощью редактора можно просматривать файлы на других программных языках. Программа поддерживает окраску синтаксиса, отступы. Может проверять параметры синтаксиса, сниппеты, используемые для хранения кода исходного столбца. Имеет режим простого редактирования и поддерживает перетаскивание элеме.
SynWrite 6.23
В интернете очень много программ, позволяющих редактировать исходный код другой программы, файла и др. Однако большинство из подобных программ являются всего лишь текстовым редактором наподобие блокнота. Отличаются они от вышеуказанного редактора лишь тем, что имеют подсветку синтаксиса. Однако в некоторых случаях, такого функционала программы оказывается недостаточно. Программисту бывает необходимо быстро находить различные части документа. И вот, наконец-то, в появилась программа, позволяющая решить эту проблему. Программа называется SynWrite. Её отличительная особенность – наличие навигационной панели с деревом, котор.
Читайте также: