|
|
|
Maximize Effects, --==Ля_лЯ==-- |
|
|
cirus |
23.3.2019, 11:58
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26707
Пользователь №: 16.971
Возраст: 29
|
Цитата И что findcolora в Lua нету? Есть, только синтаксис остался старый. Код --lua local a = findcolor([[0, 0, 1920, 1080, 1, 1 (4727808) %arr]]) hint ("Найдено пикселей " .. a) if a then -- если найдены move(arr[1][1], arr[1][2]) -- навести курсор на первый найденный пиксель end Цитата Я так понимаю в диапазоне он определять не может? Может. Ничего в этом плане не поменялось. Функция какая была, такая и осталась. Цитата Какие функции некорректно работают в пилоте на луа по отношению к старому синтаксису Список_функцийСписок_функций_(Lua)Если в списке функций луа нет какой-то функции, значит она не работает или работает не так как должна. Большая часть работает. Цитата скорости обработки/выполнения команд. Команды выполняются с одинаковой скоростью, что в старом синтаксисе, что в луа. Функция одна и также, поменялся лишь синтаксис. Разница по времени вызова будет у самописных функций и стандартных функций луа, например, вместо random() пилота, вызывать math.random() луа. Вот тут будет разница в несколько 1000 раз. Цитата Что означает _,_, на языке Lua? _ это тоже имя переменной. Иногда функция возвращает несколько значений, если какие-то из них не требуются, то _ подразумевает что эти данные не нужны. Код --lua local s = "Найти число 65432 в этой строке" local _, _, num1 = s:find("(%d+)") -- функция find возвращает: <стартовую позицию>, <конечную позицию>, <результат поиска> -- если позиция не нужна, то можно поставить _ log(num1)
local start_pos, end_pos, num2 = s:find("(%d+)") log(start_pos, end_pos, num2)
|
|
|
|
Levo222 |
23.3.2019, 12:42
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 23.3.2019, 15:58) --lua local s = "Найти число 65432 в этой строке" local _, _, num1 = s:find("(%d+)") -- функция find возвращает: <стартовую позицию>, <конечную позицию>, <результат поиска> -- если позиция не нужна, то можно поставить _ log(num1)
local start_pos, end_pos, num2 = s:find("(%d+)") log(start_pos, end_pos, num2)
Так понял.) Цитата(cirus @ 23.3.2019, 15:58) math.random() луа.
А какие еще функции ускоряют код?
|
|
|
|
Levo222 |
23.3.2019, 14:30
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Вот у меня вопрос, а функция проверить изменился ли цвет вообще нежели искать какой-то конкретный сильно будет отставать по времени? Просто если есть возможность упростить просто появлением любого цвета на черном фоне, как это закодировать? Т.е. появление любого цвета в заданной области отличного от черного будет трактоваться как условие к действию. Если есть возможность так упростить какую надо брать область и чтобы избежать ошибок? Или у меня запуталось все? Он должен найти цвет сверить с заранее записанным в таблице и потом сказать изменился или нет? Или есть функция напрямую отслеживающая изменение? Код findcolor([[8, 393 9, 394 1, 1 (12450815) %arr]]) Если я изменю поиск всего в границах 2-х/3-х пикселях это ускорит существенно результат? Изображение статично. --UPD--Короче я ниче не понял, у меня даже при отсутствии пикселя срабатывает действие Код --lua local b = findcolor([[8, 377 8, 377 1, 1 (2520518) %arr2]]) while 1 do if b > 0 then --move(arr2[1][1], arr2[1][2]) send217("v") end end Но пиксель не находит Такое ощущение что на момент компиляции пилот находит пиксель и далее держит его в памяти, даже если его там нет.
|
|
|
|
cirus |
23.3.2019, 18:31
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26707
Пользователь №: 16.971
Возраст: 29
|
Цитата при отсутствии пикселя срабатывает действие Цитата local b = findcolor([[8, 377 8, 377 1, 1 (2520518) %arr2]]) -- нашли или не нашли цвет while 1 do -- зашли в цикл if b > 0 then -- переменная b всегда будет равна тому что было до цикла Код --lua while 1 do local b = findcolor([[8, 377 8, 377 1, 1 (2520518) %arr2]]) if b > 0 then --move(arr2[1][1], arr2[1][2]) send217("v") end wait (1) end Цвет в одной точке можно и color'ом проверить. Код --lua while color (284, 610) == 0 do -- ждать пока цвет будет любой, кроме чёрного wait (1) end log ("Цвет в указанных координатах не чёрный")
|
|
|
|
Levo222 |
24.3.2019, 0:09
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 23.3.2019, 22:31) Код --lua while 1 do local b = findcolor([[8, 377 8, 377 1, 1 (2520518) %arr2]]) if b > 0 then --move(arr2[1][1], arr2[1][2]) send217("v") end wait (1) end Цвет в одной точке можно и color'ом проверить. Код --lua while color (284, 610) == 0 do -- ждать пока цвет будет любой, кроме чёрного wait (1) end log ("Цвет в указанных координатах не чёрный") Как мне обьявить сразу несколько переменных в поиске распределив приоритет между ними? чтобы потом вся архитектура не посыпалась при добавлении новых? И при этом приоритетнее всего оставить модификаторы Если буду добавлять While один за другим это же нарушит приоритетность? Располагать внутри один в другом, объявляя локальные переменные перед каждый из них? Или внутри большого цикла?
|
|
|
|
Levo222 |
24.3.2019, 0:30
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 24.3.2019, 4:19) Непонятно что требуется сделать.
Вобщем я уперся в то, что Send217 не работает с модификаторами, а sendex послылает нажатие в текущее окно(не перекрытое) и не может быть привязано. Нужно указывать hendl как-то Дерево приоритетов мне нужно, если точка а но нет б то переходим к с и главенством всего являлись бы модификаторы shift, ctrl, alt есть точки a b c d e f g они появляются в перекрытом окне приоритет их нахождения строго по списку и действия с ними с модификаторами в одном порядке, без модификаторов в другом если есть а но нет b нажимаем 1 если есть а и есть b нажимаем 2 если есть а и есть b и есть с нажимаем 3 если ее нету то дальше смотрим C,d,e,f и т.д. но при этом поглядываем на точку A непоявилась ли она? И не появилась ли точка B, Вот как нужно чтобы приоритет первых точек всегда был над последующими когда смотрится точка C нужно чтобы смотрелась и B и A
|
|
|
|
Levo222 |
24.3.2019, 2:29
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 24.3.2019, 5:14) Код --lua local A, B, C = true, true, false
log "clear" log "mode compact" if A and not B then log ("1") end -- если есть A и нет B if A and B then log ("2") end -- если есть A и B if A and B and C then log ("3") end -- если есть A, B и C Ну и че? Цикл то останавливается, а добавляешь while и какая-т опеременная выходит за её границы и уже корректно не ищется Щас буду вредничать, но мне нужно древо логической цепочки непредвзято ко времени выполнения, т.е. грамотная архитектура добавления новых переменных внутрь ступенчатой системы приоритетов(Как в Lua распределяется приоритет что внутри то важнее? и т.д.) Пирамидкой вобщем, чтобы не рушить изначально главенство переменных, иначе я потом замучаюсь добавлять ссылки и возвраты к первичной переменной. А эти If's которые вы написали будут выполняться поочереи что сущестенно замедлит работу. Я так понимаю загвоздка именно в самом Pilot'e который не может смотреть одновременно на все точки? Код if color (284, 610) nil 0 then -- если цвет в точке не черный... (как объявить функцию отрицания чёрного в заданной точке?) end return(0) if color (300, 800) nil 0 then return(0) Вобщем помню я делал скрипты на какую-то игру на Lua и там перечислялись условия для проверки есть они или нет, перечислял в строчку - и лагало у меня ужасно Потому нужна другая архитектура приоритетов и функций, чтобы лагов не было Код A, B, C = true, true, false что это значит? Нужно вот так Код --lua local H = findcolor([[8, 393 8, 393 1, 1 (если не черный) %H]]) -- Возможность излечиться local F = findcolor([[9, 394 9, 394 1, 1 (если не черный) %F]]) -- Защитные функции --если нет возможности излечиться, возможность использования защитных функций F, если нет ни того, ни другого, переходим к атаке -> посредством прожатия А, B и C по мере их появления A, B, C = true, true, false --Нутром чую что нужно объявлять и F и H local a = findcolor([[8, 393 8, 393 1, 1 (12450815) %arr1]]) --1 local b = findcolor([[8, 377 8, 377 1, 1 (2520518) %arr2]]) --2 local c = findcolor([[8, 450 8, 450 1, 1 (3386335) %arr3]]) --3 log "clear" log "mode compact" if H and then log ("Heal") end -- хил if F and not H then log ("Дефенс1") end -- нет хил есть дэфенс if A and not Н and not F then log ("удар 1") end -- удар1 if B and and not A and not C then log ("удар2") end -- удар2 if С and and not A and not B then log ("удар3") end -- удар3 Только всё это в цикле ---=== UPD ===---Я ничего не понял, если бы это был старый пилот я бы писал поочередно выполнение поиска и он искал бы по 3 часа. Но в Lua нет понятия очередности тут таблицы, как их туда засунуть? ---=== UPD ===---Вобщем я создал 3 столбика координат по которым будет непосредственно определять возможность нажатия того или иного Код --local CoordList 1st = { 10 561[H], 10 579[A], 10 596[C], 10 614[G], 10 632[D], 10 651[E], 10 668[B], } -- координаты 1 столбик --local CoordList 2st = { 30 561[P], 30 579[M], 30 596[F], 30 614[GM], 30 632[O], --30 651[], --30 668[], } -- координаты 2 столбик --local CoordList 3st = { 10 423[X], 10 441[-], 10 458[T], 10 476[D5], --10 632[], --11 651[], --10 668[], } -- координаты 3 столбик даже так: если не черный = true
Кто знает как теперь присвоить функцию[findcolor по координатам таким-то с погрешностью такой-то символу такому-то] так чтобы по 10 раз внутри цикла local не объявлять findcolor а сразу вводить переменную и проверку на неё с returnom в виде false по её выполнению?
|
|
|
|
Levo222 |
24.3.2019, 11:39
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 24.3.2019, 15:28) Код if A then -- если истина if B then -- если истина if C then -- если истина -- выполнить условие end end end Код if color (284, 610) ~= 0 then -- если цвет не равен 0 Нужно что-то типо Код --lua local CoordList 1st = { 10 561[H], 10 579[A], 10 596[C], 10 614[G], 10 632[D], 10 651[E], 10 668[B], } -- координаты 1 столбик local CoordList 2st = { 30 561[P], 30 579[M], 30 596[F], 30 614[GM], 30 632[O], --30 651[], --30 668[], } -- координаты 2 столбик local CoordList 3st = { 10 423[X], 10 441[-], 10 458[T], 10 476[D5], --10 632[], --11 651[], --10 668[], } -- координаты 3 столбик SimbolCoord = function color(localCoordList 1,2,3(x,y)) ~= 0 then return false end ???
Чтобы потом писать Код if A then while do A true(>0) Send217("A") return false --т.е. возвращало бы А = 0 end
if B then while do B true(>0) Send217("B") return false -- end if C then while do C true(>0) Send217("C") return false -- end end end end
|
|
|
|
cirus |
24.3.2019, 12:20
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26707
Пользователь №: 16.971
Возраст: 29
|
С синтаксисом сначала разберитесь. Код --lua local CoordList = { {10, 561}, {10, 579}, {10, 596}, {10, 614}, {10, 632}, {10, 651}, {10, 668}, }
log(CoordList[1][1], CoordList[1][2]) log(CoordList[2][1], CoordList[2][2]) Код --lua local CoordList = { {10, 561, "H"}, {10, 579, "A"}, {10, 596, "C"}, {10, 614, "G"}, {10, 632, "D"}, {10, 651, "E"}, {10, 668, "B"}, }
log(CoordList[1][1], CoordList[1][2], CoordList[1][3]) log(CoordList[2][1], CoordList[2][2], CoordList[2][3]) log (table.concat(CoordList[3], " "))
|
|
|
|
sutra |
25.3.2019, 1:16
|
Adept
Сообщений: 923
Регистрация: 10.8.2018 Группа: Пользователи Наличность: 0
Пользователь №: 19.007
|
Да, либо я отстал от жизни, либо совсем ничего не понимаю. Вот читаю посты и совсем не понимаю задач, подлежащих решению. Если есть варианты выполнения кода ..., если есть массивы (таблицы) от которых зависит выполнение кода ..., так это всё надо "запихивать" в файлы и потом читать из них. Ещё лучше, когда эти массивы "автоматом" создаются и сохраняются в файлы и потом используются. Хотя и тут есть варианты, я всё сделал по-своему, использую двоичные файлы, хотя читать приходится всё равно строкой (я не знаю как читать напрямую байты в один буфер из файла в LUA), но в любом случае на порядок быстрее.
|
|
|
|
sutra |
25.3.2019, 1:43
|
Adept
Сообщений: 923
Регистрация: 10.8.2018 Группа: Пользователи Наличность: 0
Пользователь №: 19.007
|
Цитата Помниться sutra где-то там делал новый алогоритм поиска картинок, но почитав что эта схема требовательна к железу и непонятно реализована ли на Lua, понял что нужно копать в более простую сторону А Вы пробовали его использовать? Я давал конкретные рабочие примеры, ну хотя бы для понимания ЧТО МОЖНО искать и с КАКОЙ скоростью. Да, в том коде были недочёты. Да, конечно есть уже другой код, но основа прежняя. Но даже те примеры никто не тестировал, никто не указал на недостатки и ошибки, никто не проявил интереса, никто не задал ни одного вопроса, ну и я утратил интерес. У меня всё работает быстро и как надо, по ходу дела дорабатываю эту функцию. В общем ... будет необходимость - помогу, а абстрактно рассуждать уже не хочется.
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|