|
|
  |
Вопрос по луа |
|
|
DarkMaster |
8.3.2018, 20:31
|
          
Модератор UOPilot
Сообщений: 9.742
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29646
Пользователь №: 11.279

|
Цитата Делфи это делфи. Функция же работает с луа стеком, а не делфи параметрами. Дык лог то это функция делфи и с каким стеком она не начни работать ограничения делфи никуда не денутся. Ну можно переделать ее под принятие динамического массива, создавать, удалять, перебирать. Я вот просто убей не вижу в этом _актуальности_. Я не против, можно все это прикрутить, реализовать. Но это действительно так актуально, что мы развели столько демогогии? За все годы общения с пилотом я не могу вспомнить, когда мне было необходимо передать столько параметров в лог. При этом полноценная замена реализуется в пять строк на луа без каких-либо потерь. Такое количество параметров предполагает некоторое форматирование ибо иначе просто будет ничего не понятно, а в таком случае оператор две точки становится намного удобнее, чтобы не думать о том куда там влепит пилот свои делиметры. Код --lua function _log (...) local s if arg[1] then s = arg[1] else s = "nil" end for i = 2, arg.n do if arg[i] then s = s .. " " .. arg[i] else s = s .. " " .. "nil" end end log(s) end
_log(1,2,3,4,5,6,7,8,9,0,"Y","W","F","P","V","r","s","t","d","e",1,2,3,4,5,6,7,8,9,0,"Y","W","F","P","V","r","s","t","d","e") Ирония в том, что стандартный лог это тоже сожрал) Сообщение отредактировал DarkMaster - 8.3.2018, 20:33
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Cockney |
8.3.2018, 21:31
|
       
Master
Сообщений: 1.403
Регистрация: 22.6.2013 Группа: Пользователи Наличность: 22549
Пользователь №: 16.156

|
Посмотри пример плагина который я выкладывал. Там нет фич, зависящих от языка. Вся работа на стеке и только на нем. Нет, это не актуально, по крайней мере для меня. Просто я пытаюсь донести мысль, что нельзя оставлять пилот-код в таком же состоянии, каким он был до луа и пытаться стянуть две технологии для совместимости. Вот смотри : Код log "clear" log "mode compact" Это вкусовщина, но по-моему лучше сделать так : Код log(clear) log(mode.compact) Это как минимум. Можно еще лучше, вынеся настройки лога за функцию : Код log(clear) log.mode.compact = true Да вариантов несколько, не суть. Почему настройки-параметры передаются как строки, хотя они никак не связаны с ними ? Бред же. Что касается лога с 10 параметрами. Тут смотри, луа может возвращать сколь угодно значений из функции и столько же принимать. Как луа-юзеру(именно луа) нужно догадаться, что ограничение 10 ? Почему 10 ? Это не естественные ограничения, а все эти обертки над логом адский костыль. Ты предлагаешь допиливать дефолтный лог при нужде ? Причем по совершенно глупой. Это только вершина айсберга. Больше чем уверен есть еще много мест с такими нелепицами.
|
|
|
|
DarkMaster |
8.3.2018, 21:48
|
          
Модератор UOPilot
Сообщений: 9.742
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29646
Пользователь №: 11.279

|
Цитата log(clear) log(mode.compact) Подобная запись предполагает наличие константных переменных clear и mode.compact, причем еще и глобального массива mode. Имхо крайне плохая идея. Цитата log.mode.compact = true Похоже направду. Ну либо функцией - не суть. Но при этом подходе невозможно будет сделать: log(some_text) т.к. log больше не функция, а массив. Цитата Больше чем уверен есть еще много мест с такими нелепицами. Есть. Причем гораздо более страшными, поэтому я и говорил, что не на том фокусируемся, есть неработающие под луа функции, и жесткий косяк с параметрами заданными строкой, о чем ты как раз написал. Приоритеты...
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
cirus |
9.3.2018, 19:55
|

         
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26760
Пользователь №: 16.971
Возраст: 29

|
Код --lua adres = [[C:\Users\Andrey\Desktop]] -- квадратные скобки для того чтобы не писать \ по 2 раза image = [[\b.bmp]] a = findimage(0, 0, 1920, 1080, "(", adres .. image, ")", "%arr", 2, 80, 1, 10) hint (a) Вообще это всё надо переделывать под синтаксис луа.
|
|
|
|
dron4938 |
9.3.2018, 20:07
|

   
Apprentice
Сообщений: 285
Регистрация: 20.3.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.395

|
Цитата(cirus @ 9.3.2018, 19:55)  Код --lua adres = [[C:\Users\Andrey\Desktop]] -- квадратные скобки для того чтобы не писать \ по 2 раза image = [[\b.bmp]] a = findimage(0, 0, 1920, 1080, "(", adres .. image, ")", "%arr", 2, 80, 1, 10) hint (a) Вообще это всё надо переделывать под синтаксис луа. Пилотовским языком культурнее смотрится) А если без задания переменной картинке? Чет не работает так Код --lua adres = [[C:\Users\Andrey\Desktop\]] -- квадратные скобки для того чтобы не писать \ по 2 раза --image = [[\b.bmp]] a = findimage(0, 0, 1920, 1080, "(", adres .."\b.bmp", ")", "%arr", 2, 100, 1, 0) hint (a)
|
|
|
|
cirus |
9.3.2018, 20:30
|

         
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26760
Пользователь №: 16.971
Возраст: 29

|
Код --lua adres = [[C:\Users\Andrey\Desktop\]] -- квадратные скобки для того чтобы не писать \ по 2 раза a = findimage(0, 0, 1920, 1080, "(", adres .."b.bmp", ")", "%arr", 2, 100, 1, 0) hint (a) \ в имени картинки не нужен, он же в пути указан.
|
|
|
|
dron4938 |
9.3.2018, 20:40
|

   
Apprentice
Сообщений: 285
Регистрация: 20.3.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.395

|
Цитата(cirus @ 9.3.2018, 20:30)  Код --lua adres = [[C:\Users\Andrey\Desktop\]] -- квадратные скобки для того чтобы не писать \ по 2 раза a = findimage(0, 0, 1920, 1080, "(", adres .."b.bmp", ")", "%arr", 2, 100, 1, 0) hint (a) \ в имени картинки не нужен, он же в пути указан. Так тоже не работает) Так работает: Код --lua adres = [[C:\Users\Andrey\Desktop\]] -- квадратные скобки для того чтобы не писать \ по 2 раза image = [[b.bmp]] a = findimage(0, 0, 1920, 1080, "("..adres..image,")", "%arr", 2, 100, 1, 0) hint (a)
Так нет: Код --lua adres = [[C:\Users\Andrey\Desktop\]] -- квадратные скобки для того чтобы не писать \ по 2 раза a = findimage(0, 0, 1920, 1080, "("..adres.."b.bmp", ")", "%arr", 2, 100, 1, 0) hint (a)
Тест картинка: (IMG: http://i.yapx.ru/BEHK6.png) Ааа заработало хд
Прикрепленные файлы
b.bmp ( 4,25 килобайт )
Кол-во скачиваний: 96
|
|
|
|
DarkMaster |
9.3.2018, 22:48
|
          
Модератор UOPilot
Сообщений: 9.742
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29646
Пользователь №: 11.279

|
Цитата Можно ли задать переменной какое то действие? Это назвывается функция =) Код function bb (var) wait(var + math.random(var)) return end -- вызываем: bb(1000)
кстати bb в луа является ссылкой и по своей природе настоящей переменной. Даже объявление на самом деле просходит, как: Код а запись: Код является не более, чем "синтаксическим сахором", т.е. просто в угоду удобству и привычке программистов.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|