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 Опубликовано 10 Октября 2011 Автор Поделиться Опубликовано 10 Октября 2011 (изменено) RvP, Основные претензии к встроенному random не столько насчёт скорости, сколько по поводу качества. Каково происхождение новой функции? Работает ли с ней randomseed? Изменено 10 Октября 2011 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
RvP 1 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 malandrinus, знаю. randomseed не работает, там автоматом первый член устанавливается как текущее время. Устанавливается при каждом создании луа потока, тоесть каждую загрузку или заход в игру. Сам генератор взят отсюда http://www.cyberguru.ru/cpp-sources/algori...isel-page3.html Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Artos 99 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 (изменено) RvP Работает с любым патчем ТЧ. 1. Установил пакет dll-ек по инструкции. Пока никаких доп. вызовов из скриптов ( RvP() ) не произвожу. 2. Попытка запуск игры на 1.0004 и 1.0005 заканчивается выбросом окна ошибки от XR_3DA "Точка входа в процедуру ?allocate@class_rep@detail@luabind@@QBE?AU&$pair@PAXPAX@stlp_std@@PAUlua_State@@@Z не найдена в библиотеке DLL XRLUA.DLL." 3. Запуск на 1.0006 упирается в первую же строку обработки стринга функцией 'string.format'. Обход ее приводит к следующим ошибкам по всем функциям класса 'string'. 4. Активация вызовом RvP() из '_g.script' позволяет увидеть тестовый вывод в abs(string) - отображается в логе, но не меняет картины ... Игра рушится на обработках строк. что не так (игра пока чистая, без модов/правок)? Изменено 10 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Monnoroch 6 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 То есть разработчики все же не вносили изменений в luabind? Просто не было возможности посмотреть, собирать буст с луабиндом на моем калькуляторе радости мало, и потом, винду еще ставить... но интересно же. Ссылка на комментарий
RvP 1 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 Monnoroch, собирать оригинальные луа\луабинд\еще что то чревато, потому путь должен быть другой Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Artos 99 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 (изменено) RvP С обновленным вариантом на 1.0004/5 игра стартует, но(!) как и ранее описывал для 1.0006 - при первом же вызове методов класса 'string' игра вылетает с фатал-еррором, ругаясь на nil-евые значения методов. Внеся небольшую правку в _g.script оригинальной игры: RvP() function printf(fmt,...) --log(string.format(fmt,...)) --/< тут вылетает аналогично 23-ей строке abs("Test_Extended_Lua") abs("1st:"..fmt) abs(string.format(fmt,...)) --/< 23-я строка end Имеем вывод в логе первых двух строк и фатальный вылет с '_g.script:23: attempt to call field 'format' (a nil value)'. Если тут заремить - вылетит далее на первом же string.XXX ... Изменено 10 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
RvP 1 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 случайно удалил кусок кода - строковая библиотека и не открылась. Исправил. http://rghost.ru/25084741 Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Artos 99 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 RvP, с последним вариантом игра (и с модами) пошла ... Но похоже есть нюансы при включенном функционале. Подробнее - уже завтра. Добавлено через 52 мин.: P.S. Новый вариант math.random([a[, b]]) багует ... math.random(1,100) => 169 и т.п. Т.е. вылетает за диапазон, что кое где критично. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
RvP 1 Опубликовано 11 Октября 2011 Поделиться Опубликовано 11 Октября 2011 исправил генерацию числа из промежутка. Вернул стандартную функцию math.random, новая теперь math.rand http://rghost.ru/25213001 Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Artos 99 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) RvP, спасибо за подправленную версию. Гоняю ... на игре с модом, пока замечаний нет, только положительные эмоции (глядя в более чистый/компактный лог). Очень полезно, что появилось пространство 'debug', в частности трассировка (debug.traceback). Несколько пожеланий-рекомендаций: 1. Переименовывать исходную библиотеку не с суффиксом '_old', а с чем-то более нейтральным, например '_src'. У многих 'old/bak' ассоциируется с ненужным мусором, да и чистильщики дисков порой имеют в настройках ткакие маски. Т.о. можно ненароком удалить необходимое. 2. Уточнить в реадме, что версия 1.0000-1.0003 и для 1.0006 предназначается. 3. Дать команде вывода в лог наименование более функционально значимое чем 'abs', например 'to_log' иль 'logf'. И вопрос: Каковы дальнейшие планы по работе с этим расширением? Планируется ли дальнейшее расширение функционала со стороны автора или это на откуп самим модмейкерам? Изменено 12 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
RvP 1 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) Artos, 1. Был вариант с суффиксом "_GSC", возможно вернусь к нему. 2. Шестого патча не имею, его вообще не проверял, спасибо, уточню. 3. abs подсвечивается в редакторе а дальше уже можно в начале _G сделать to_log = abs или как по вкусу да и все. upd тут еще можно дать ей имя стандартного log, но тогда в логе будет слишком много мусора --upd Второй вариант приветствуется(имхо, пространство имен package как раз для этого), но если будут конкретные вопросы\пожелания\идеи то скорей всего сделаю все что в моих силах Изменено 12 Октября 2011 пользователем RvP Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Artos 99 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) RvP 1. Вполне годится и '_gsc', главное уйти от довольно двусмысленного '_old'. 3. В редакторе подсветку каждый сам себе может править, да и у каждого 'свой' редактор .... А вот то, что именно и подсвечивается 'не своим' цветом и напоминает о математическом методе, а не консольном - несколько сбивает. Так как ты и говоришь - так и использую сейчас, но сторонник давать имена функциям/методам/переменным по принадлежности к функционалу а не ... с потолка. Проходит время - и начинаешь вспоминать, что ж означает данное обозначение, оторванное от контекста. :-) Имя стандартного 'log' - тоже не считаю удачным, но по аналогии с 'printf' и аналогичными - 'logf' (ИМХО) вполне и узнаваем и понятен. Ну и ... не знаю, востребованы ли string.trim_r или string.trim_l, а вот string.trim_w (чистка и усечение по первому слову) будет более востребован. Изменено 12 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
RvP 1 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 Artos, 1. Как нибудь переделаю. 3. log тоже математическая функция) тут дело вкуса, не более, каждый сам себе делает как ему нравиться про string.trim_w что то не пойму как он должен работать и чем он должен отличаться Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Artos 99 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) RvP, тут (в топиках по скриптам) уже проскакивало про то, что из строки порою требуется не только отсекать слева/справа иль с обеих сторон пробелы, но получать первое значимое слово. Т.е. возвращать слово до первого пробела, не считая начального. Что-то типа: return string.match(str, '^%s*(%S*)') --/ trim_w в отличии от обычного трима: return string:match(str, '^%s*(.*%S)') --/ trim Изменено 12 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Nazgool 250 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) ...Что-то типа: return string.match(str, '^%s*(%S*)') Первое слово наверное лучше искать так : return str:match('%S+') match сам по себе уже ищет первое вхождение %S исключает пробелы + укажет на первый "не пробел" и максимальное продолжение "не пробелов", т.е. на первое слово Изменено 12 Октября 2011 пользователем Gun12 Ссылка на комментарий
Artos 99 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) Gun12, ты полностью прав, поэтому и написал 'типа этого' ... а я осталял себе как напоминалку, т.к. могла возникнуть потребность фильтровать еще и '\160' ... Кстати, твой вариант на ~30% быстрее упомянутого мною. :-) Изменено 12 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
7.9 174 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) 1. Переименовывать исходную библиотеку не с суффиксом '_old', а с чем-то более нейтральным, например '_src'. У многих 'old/bak' ассоциируется с ненужным мусором, да и чистильщики дисков порой имеют в настройках ткакие маски. Т.о. можно ненароком удалить необходимое. 1. Был вариант с суффиксом "_GSC", возможно вернусь к нему. 1. Вполне годится и '_gsc', главное уйти от довольно двусмысленного '_old'. Это, не означает, что прежняя библиотека то-же будет продолжать использоваться (под новым именем)? 2. Уточнить в реадме, что версия 1.0000-1.0003 и для 1.0006 предназначается. То-есть, для версии 1.0006, я могу попробовать версию для 1.0000-1.0003? Изменено 12 Октября 2011 пользователем 7.9 всё легко Ссылка на комментарий
RvP 1 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 7.9, оригинальная библиотека все равно используется в полном объеме, и без нее ничего работать не будет Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Artos 99 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) 7.9 1. Означает именно то, что прежняя библиотека ПРОДОЛЖАЕТ использоваться под новым именем, а не становится рудиментом. Без нее (под новым заданным именем) работа невозможна. По сути новая dll-ка - это надстройка, в которую добавлен дополнительный функционал, через которую вызываются штатные библиотеки Lua5.1 и транслируются запросы в прежнюю библиотеку из исходной игры. 2. Да, именно не попробовать, а использовать. Иного варианта нет. Изменено 12 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
7.9 174 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) Понято: прежнюю библиотеку оставляем, называем как написано; для 6 патча используем то, что для 1-3; правленый xrGame.dll - видимо - проблемой не будет. (просьба поправить если что-то не так, если всё так - ничего не говорите; извиняюсь, что переспрашиваю) Изменено 12 Октября 2011 пользователем 7.9 всё легко Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти