Dennis_Chikin 3 658 Опубликовано 4 Января 2015 Поделиться Опубликовано 4 Января 2015 (изменено) С чего начинать и где взять. Установка Lua:http://www.amk-team.ru/forum/index.php?showtopic=11584&p=629106 Руководство «Программирование на языке Lua», третье издание:http://www.amk-team.ru/forum/index.php?showtopic=11584&p=905308 Изменено 2 Марта 2015 пользователем Kirgudu Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Malandrinus 615 Опубликовано 20 Сентября 2011 Поделиться Опубликовано 20 Сентября 2011 (изменено) Неоднократно поступали предложения создать тему для обсуждения Lua и вопросов, связанных с программированием на нём. Также регулярно возникают достаточно интересные дискуссии в теме "Справочник" а также в других темах, типа "Скриптование и спавн" или ковырялки. Народ говорит много интересного, но либо тема непрофильная (как справочник) и приходится это всё вычищать, либо интересное обсуждение уходит по треду далеко назад и скрывается за тоннами вопросов по конфигам и пр. Поэтому есть основания надеяться, что данная тема будет полезна. Здесь предлагается обсуждать язык Lua, его синтаксические особенности, производительность, приёмы использования стандартные и не очень. Также здесь предлагается постить примеры алгоритмов для решения разных достаточно общих задач, по возможности не сильно привязанных к игре. Естественно, поскольку форум пока ещё по сталкеру, привязки к игре не избежать. Также, полагаю именно здесь можно вести умные разговоры об оптимизации и всяких общих вещах, типа парадигм объектно-ориентированного программирования, обработки ошибок и технологий отладки скриптов, стиля оформления кода и "единственно правильного пути" в программировании, как вы его видите =) Изменено 20 Сентября 2011 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Nazgool 250 Опубликовано 20 Сентября 2011 Поделиться Опубликовано 20 Сентября 2011 (изменено) malandrinus Исходя из собственного незначительного опыта, и для упреждения беспорядка в топике предлагаю вынести в шапку следующие пункты : 1 Установка Lua 2 Справочник по Lua 5.1 2.1 Введение 2.2 Описание языка 2.3 Стандартные библиотеки 2.4 ООП3 Ссылки На данный момент считаю этот набор достаточным. По мере необходимости построение можно будет расширять и дополнять. Думаю что в таком контексте наполнение топика общей информацией будет более упорядоченным. Это лично моё, субъективное, мнение, т.к. для подобного порядка наполнения имею немало информации. Пункты от 2.1 до 2.4 расширятся также. (например описание COROUTINE можно перенести в "2.3 Стандартные библиотеки". Но это уже по ходу дела. Хотелось бы услышать мнение сообщества. ------------------------------ У меня установлены свои версии, но качаем новейшие. Для пункта "1 Установка Lua" Качаем и устанавливаем Lua for Windows. Например отсюда : http://code.google.com/p/luaforwindows/downloads/list P.S. У меня проверенная, надёжная старушка 5.1.4-35. Но не суть. После установки у Вас (по умолчанию) на диске С в папке Program Files появиться папка lua. Далее по адресу C:\Program Files\Lua\5.1\ удаляем папку SciTE. Качаем SciTE. Тоже например отсюда : http://soft.softodrom.ru/ap/SciTE-p6800 Устанавливаем её в папку C:\Program Files\Lua\5.1\SciTE Далее идём на (как там Вам удобно) --> "Рабочий стол" --> "Мой компьютер"(Правый клик) --> "Свойства " --> "Дополнительно" --> "Переменные среды"(Параметры) --> в окне "Системные переменные" проверяем наличие полей : Имя переменной LUA_DEV Значение переменной C:\Program Files\Lua\5.1 Имя переменной LUA_PATH Значение переменной ;C:\Program Files\Lua\5.1\lua\?.luac Имя переменной Path Значение переменной (смотрим в конце после всего) ";C:\Program Files\Lua\5.1;C:\Program Files\Lua\5.1\clibs" Если каких то нет, то прописать как указано. После этого запустить SciTE, написать - print('Hello Word') В открывшейся консоли должно напечатать - Hello Word Если напечатало, то можно приступать к дальнейшим настройкам. ------------------------------ malandrinus Вот мои доводы. Только не многое захотят с этим разбираться, а на самом то деле... : http://scite-ru.googlecode.com/svn/trunk/p...u_Pack_rus.html А вот либы в сборке, а если нет, то можно легко подключить : http://code.google.com/p/luaforwindows/ Но это всё уже пойдёт в категорию "Ссылки" :-) Когда соберу до кучи. Изменено 21 Сентября 2011 пользователем Cyclone 1 1 1 Ссылка на комментарий
Malandrinus 615 Опубликовано 20 Сентября 2011 Автор Поделиться Опубликовано 20 Сентября 2011 (изменено) Признаться, не думал, что так для всех важен редактор. Какое вообще отношение редактор имеет к языку? Lua же платформенно-независимый! Короче, от сего момента буду нещадно тереть любое упоминание о редакторах, не несущее конструктивной информации. Однако приветствуется: - перечисление дельных фишек конкретного редактора - приведение конкретной информации о настройках, ссылки на полезные мануалы, решение проблем и т.п. - вопросы в этом же ключе И повторяю вопрос. Знает ли кто, чем можно автоматически отформатировать Lua программу? Я не имею в виду поддержание текущего отступа, это тривиально. Я хочу как в Visual Studio, выделил фрагмент, нажал кнопочку, и мой фрагмент отформатирован. Причём, это не только красоты ради надо. Подобный инструмент безумно помогает искать потерянные/лишние концы блоков. Поскольку я потёр оригинальный пост break (погорячился, прошу прощения), то привожу ссылку на ру-борд-овский форум по SciTE здесь _http://forum.ru-board.com/topic.cgi?forum=5&topic=35160 потом, надеюсь, соберём всё в шапке Изменено 21 Сентября 2011 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) malandrinus Может быть кто-то знает такой инструмент по форматированию LUA контента и посоветует, но мне готовое не известно, но ... Мысль в слух: Подобное форматирование вероятнее, если и реализуемо, то в виде макроса(ов). Если найти или написать требуемый макрос - то уже упоминавшиеся SciTE или UltraEdit позволяют подключать макросы и пользоваться ими. Обычно около 'крупных' редакторов для программеров формируется комьюнити, которое пишет что-то и на темы форматирований текстов, и выкладывает в депозитории. Могу ошибаться, т.к. давно не занимался такими поисками - но что-то на тему форматирования текстов на уровне макросов попадалось пару лет назад. Изменено 21 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Malandrinus 615 Опубликовано 21 Сентября 2011 Автор Поделиться Опубликовано 21 Сентября 2011 (изменено) Вот устанавливал себе SciTE по ссылкам с руборда. Сразу покритикую, пока не остыло: 1. Установщик требует прав администратора. На корпоративный компьютер поставить смог только частично и с бубном. Пришлось распаковывать установщик вручную, делать промежуточный командный файл с SET-ами и т.п. 2. Русская (как бы) версия имеет нелокализованный по умолчанию интерфейс. Как это изменить, не нашёл. 3. Настройки в виде текстового файла. Чтобы найти нужную опцию надо листать простыню из больше десятка страниц. Это шутка такая? 4. Окно About выглядит насмешкой, поскольку в нём собственно "о программе" нет ни слова 5. Мелочи, типа отсутствия на тулбаре кнопки поставить брейкпоинт, это вроде как и не недостатки, но смотря на п.3 (выше) это уже становится недостатком. 6. Да вот ещё, нет кнопочек закрытия на каждой вкладке. Очень неудобно. Изменено 21 Сентября 2011 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Nazgool 250 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) malandrinus Про новые версии сказать ничего не могу. У меня 2.25 .93Ru и интерфейс русский, и настройки не в виде текстового файла, а виде файла properties(это для SciTE то же самое, что и ini) А это значит что поддерживается фолдинг. Так, не буду забегать вперёд. Сейчас как раз пишу о настройках редактора. Там пытаюсь кое что рассказать. Добавлено через 43 мин.: Для пользователей SciTE. Настройка редактора. Сразу хочу сказать, что при желании настраивать можно много чего, но я остановлюсь на некоторых из настроек. Далее вы уже сами будете смотреть что нужно, а без чего можно и обойтись. Итак, запустите редактор. Выберите пункт меню "Настройки" и в нём перейдите к строке "Подключенные настройки". В выпадающем списке выберите (по одному) следующие файлы, которые откроются в редакторе : Открыть lua.properties Открыть others.properties Начнём изменять. P.S. Я уже и не помню как было изначально, поэтому покажу как у меня, а там Вы уже сами разберётесь. Переходим к файлу lua.properties. В самом начале ищем строку file.patterns.lua=*.lua; и т.д. В конце строки перечисления расширений добавляем (через двоеточие) file.patterns.lua=*.lua; ... ;*.script Это делается для того, чтобы к файлам с расширением .script применялась такая же подсветка синтаксиса, как и для lua. Далее опускаемся почти к концу файла и ищем строку : command.compile.*.lua=LuaC-5.0.exe -o "$(FileName).luc" "$(FileNameExt)" Комментим её (символом #), и ниже пишем такую строку : command.compile.*.lua=luac.exe -o "$(FileName).luc" "$(FilePath)" Это нужно для компиляции файла в бинарник. Теперь (где-то рядышком) ищем строку : command.go.*.lua=lua -e "io.stdout:setvbuf 'no'" "$(FileNameExt)" (и если есть строку command.go.subsystem.*.lua;*.macro=3) Тоже комментим её(их), и ниже пишем новую строку : command.go.*.lua=lua "$(FilePath)" Этим самым настраивается интерпретатор для работы с lua. С этим файлом пока всё. Сохраняем. Переходим к файлу others.properties В первой же строке : file.patterns.props= ... дописываем в конце ;*.ltx Сохраняем. После этого открывая в редакторе файлы с расширением *.ltx, к ним применяется подсветка файлов *.INI, *.CFG. Т.е. все секции окажутся свёрнутыми, и останется только название секции. Слева от текстового окна находится колонка фолдинга, с помощью которой можно разворачивать/сворачивать блоки, секции. Свернуть/развернуть сразу все блоки(секции) можно с помощью пункта контекстоного меню, открывающегося при правом клике на окне с текстом кода. Фолдинг поддерживается также для файлов lua(а благодаря нашим настройкам и *.script), xml и др. Ну вот первая капля в море уже есть :-) Мог что-то забыть, но походу дела исправим если нужно. Чуть позже напишу об использовании аббревиатур, в качестве автодополнения кода. Изменено 21 Сентября 2011 пользователем Gun12 1 1 Ссылка на комментарий
Artos 99 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) malandrinus Странно, слова твоей критики больше подходят к пользователям Винды и меньше к программерам. 1. По умолчанию программистский софт ставится или с административными правами или с расширенными. "Lua for Windows", частью которого и является SciTE, требует при установке именно прав админа. 2. Следствие некорректной/частичной установки. 3. Есть два подхода: Windows - "Запрещено все, что неразрешено" и UNUX - "Разрешено все, что не запрешено". Ты просто привык к первому. 4. Это все же продукт для тех, кто знает что ставит и чем пользуется, а не для тех, кто сам не помнит что поставил и зачем. Минимальная инфа есть: версия, ссылки ... 5. согласен, но возможно можно настроить. 6. согласен, хотя опять таки тут конфликт взглядов. Если я сижу и обеими руками стучу по клаве, то мне более чем достаточно хоткея (Ctrl+W), для закрытия окон, чем искать мышь позиционировать на крестик и кликать ... На первый взгляд и первое время мало какой софт воспринимается удобным, если человек уже привык к чему-то иному. Все же везде требуется адаптационный период. Ну а если что-то остается неудобным или недостаточным - поэтому я ранее и писал о том, что в основном сижу в UE, а SciTE - тогда, когда именно занимаюсь около-"языковыми" вопросами. Изменено 21 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Nazgool 250 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) Написал В конце строки перечисления расширений добавляем (через двоеточие) Через точку с запятой конечно. Исправьте если можно и удалите, плз, этот пост. Изменено 21 Сентября 2011 пользователем Gun12 Ссылка на комментарий
Artos 99 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) Вопрос: Каковы возможности в LUA (применительно к Сталкеру) по работе из скриптов со стеком? В мануале по LUA достаточно куцая информация и практически только для внешнего использования (применительно к С/С+) ... Помнится в том же Perl'е из скриптов работа со стеком хотя и редко, но используется и нередко позволяет сильно ускорить отдельные операции. Есть ли какие мануалы/статьи/примеры по стековым методам/операциям для LUA? Добавлено через 33 мин.: Gun12, поправлю: ищем строку : command.go.*.lua=lua -e "io.stdout:setvbuf 'no'" "$(FileNameExt)" (и если есть строку command.go.subsystem.*.lua;*.macro=3) Тоже комментим её(их), и ниже пишем новую строку : command.go.*.lua=lua "$(FilePath)" Этим самым настраивается интерпретатор для работы с lua. строка для возможности запускать скрипты из Сталкера (*.script) должна быть: command.go.*.lua;*.macro;*.script=dofile $(FilePath) Изменено 21 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Nazgool 250 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) Вот чувствовал что забыл что-то. У меня, например, это в отдельной строке (эксперименты знаете ли) command.go.*.script=lua "$(FilePath)" Кстати выполнять выделенную часть кода можно комбинацией "Ctrl + 4" Изменено 21 Сентября 2011 пользователем Gun12 Ссылка на комментарий
abramcumner 1 157 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 Artos, Gun12, строка для возможности запускать скрипты из Сталкера (*.script) должна быть: command.go.*.lua;*.macro;*.script=dofile $(FilePath) По идее же сталкеровские скрипты не будут работать - содержимое lua_help.script не экспортировано. Или это можно как-то обойти? Ссылка на комментарий
Artos 99 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) abramcumner: содержимое lua_help.script не экспортировано Ну, во-первых, это и не скрипт (lua_help), а считай напоминалка модмейкерам ... далеко не полная и нередко устаревшая. Во вторых, даже если ... то мы-то кто(?) - модмейкры, т.е. те кто сами пишет/добавляет и классы и пр. - значит "наше" самописное тоже добавлять потребовалось бы. Само собою, любой скрипт, в котором будут встречаться неопределенные переменные/классы/функции будет выполняться ровно настолько, насколько это все неизвестное определено/доступно. Мне, например достаточно проверять не полностью скрипты из игры, которые привык писать для нее, а автономные простенькие, в которых не используются внешние переменные и пр. Проверить работоспособность, скорость, сравнить, получить результат некоей вычислительной функции - все это и позволяет SciTE при его адаптации в игре (к файлам *.script). Ну и ... можно же и экспортировать нужное тебе (поэтому мод пишу в UE, но нередко обращаюсь к SciTE, когда вопрос по чистому LUA) Добавлено через 9 мин.: Gun12: Кстати выполнять выделенную часть кода можно комбинацией "Ctrl + 4" А вот если пояснишь, как это реализовать для скриптов игры (*.script) - был бы благодарен, т.к. как-то не нашел времени раскопать это ... А выдирать нужные фрагменты в отдельные фалы - утомительно порою. Изменено 21 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Nazgool 250 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 ... как это реализовать для скриптов игры (*.script) Может я не так понял вопрос? Это работает только в контексте активного открытого файла. Открываешь файл *.script в SciTE, выделяешь нужную часть, нажимаешь "Ctrl+4". Ссылка на комментарий
Artos 99 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) Gun12, именно про это и говорю, но ... при моих настройках, в которых не правил данный момент отсутствует возможность выполнять выбранный фрагмент кода. Вероятно это настраивается тут: # Команда- Выполнить выделенный тект (Ctrl+4) command.name.4.$(file.patterns.lua)=Execute Selection command.4.$(file.patterns.lua)=dostring $(CurrentSelection) command.mode.4.$(file.patterns.lua)=subsystem:lua,savebefore:no - но при дефолтых строках именно с *.script "Открываю -> выделяю -> нажимаю ->" - только панельки тоолбаров подмигивают, консоль пуста. (версия SciTE та же , что и у тебя, хотя установлена 'параллельно' исходной) P.S. Выложи, если возможно, твои настройки или, как говорил 'портированный вариант для флешки'. Изменено 21 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Nazgool 250 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) При тех настройках что я дал должно работать. Т.е. по адресу меню "Tools" --> "script" --> должно появиться поле "Выполнить выделенное Ctrl+4" В файле lua.properties должна быть запись file.patterns.lua=*.lua;*.wlua;*.lexe;*.glua;*.gluaw;*.mlua;*.clua;*.macro;*.script Иначе не работает Portable вариант нужно ещё подготовить. Может завтра? Изменено 21 Сентября 2011 пользователем Gun12 Ссылка на комментарий
Malandrinus 615 Опубликовано 21 Сентября 2011 Автор Поделиться Опубликовано 21 Сентября 2011 Я всё же надеюсь, что здесь начнётся разговор про Lua. Пока говорим только про SciTE. Создаётся ощущение, что изучение Lua совершенно немыслимо без SciTE. 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Nazgool 250 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) В SciTE присутствует боковая панель, в которой (в закладке "abbrev") находится список автоформатов выражений. Двойной клик на нужной строке вставляет в текст кода необходимое выражение. Или же при наборе выскочит окошко с возможным макросом, который вставляется по нажатию клавиши Enter/ Имея привычку пользоваться данным инструментом можно не беспокоится о "забытом" end-е, или о...В общем как Вы сами захотите настроить. А настраивается это дело по адресу .\Lua\5.1\SciTE\abbrev\lua.abbrev Как и что там писать, думаю, особого труда не составит. malandrinus Да кто же против? Будут у меня вопросы - задам, будут у других - попытаюсь ответить. А пока преследую свою цель. А именно постепенно выкладываю информацию согласно своей стандартизации. Сразу всё выложить не в состоянии. Изменено 21 Сентября 2011 пользователем Gun12 Ссылка на комментарий
Malandrinus 615 Опубликовано 21 Сентября 2011 Автор Поделиться Опубликовано 21 Сентября 2011 Artos, это и не скрипт (lua_help), а считай напоминалка модмейкерам ... далеко не полная и нередко устаревшая. Не соглашусь по обоим пунктам. Это полная и в силу этого актуальная информация. Хотя разумеется полная лишь в том смысле, что там перечислено всё, что экспортировано. Конечно, описания там никакого, и потому называть это "help" было в каком-то смысле издевательством. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) (алаверды) malandrinus, Пока говорим только про SciTE Cм. вопрос: #9 ... и тишина. :-) malandrinus, Не соглашусь по обоим пунктам В моей фразе три пункта, поэтому по трем: 1. не скрипт - кроме расширения к скриптам этот файл не имеет никакого отношения. 2.1. далеко не полная - использовано относительное определение. То, что кому-то 'близко', для кого-то 'далеко'. Согласен, что 'далеко' несколько утрированно, но суть 'не полноты' передает. 2.2. 'Полнота' не обозначена чего именно, и тобою же самим делается оговорка. И даже в том смысле что "там перечислено всё, что экспортировано" - не соглашусь с определением "все". Распечатка даже некоторых методов говорит о далеко не полном перечислении их функций и пр. в этом файле. 3. устаревшая - то, что в этом файле перечислены методы, которые может быть когда-то и работали в каких-то билдах, но не работают с теми релизами, в которых этот файл присутствует - иначе не называют. Остаюсь при своем мнении, что это всего лишь напоминалка, хотя и достаточно наполненная и даже в чем-то избыточная (на мой взгяд). Для новичков в модинге, я ее называю "азбука" Изменено 21 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Nazgool 250 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 ... и тишина. :-) Тоже жду кто ответит. Я таких возможностей не знаю. На данный момент считаю, что это можно сделать только из С (Lua C API). Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти