|
|
|
Lua |
|
|
DarkMaster |
14.9.2017, 15:05
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27738
Пользователь №: 11.279
|
Код tmp = {} findResult = findimage( options.crds[1] .. " " .. options.crds[2] .. " " .. options.crds[3] .. " " .. options.crds[4] .. " " .. "(" .. options.path .. symbolName .. options.ext .. ") " .. "%tmp " .. screenshot .. " " .. options.accuracy .. " -1 " .. options.deviation) --log("symoblName: ".. symbolName .. " findResult: " .. findResult) -- проверяем на возрват нуля или ошбики, со стрингом нормально не сравнить. if findResult ~= "0" and string.find (findResult, "-") then -- Напрямую вернуть таблицу в функцию нельзя из-за синтаксиса. table.insert(crds,tmp) end Кнайт, это просто вызов финдимиджа и проверка на < 1. Можно как-то поближе к реалиям? Параметры не через дикий стринг, результат тоже кстати приходит стрингом. Так же обрати внимание на таблицу - вроде бы приходит таблицей, но не исключаю, что и номера строк заданы стрингом и по сути это не массив, а таблица, тогда нарушается порядок нахождения изображений слева направо сверху вниз, т.к. таблица хранится не по порядку в отличии от массива. Результат нельзя вернуть в функцию, так же его нельзя вернуть во вложенный массив, например image.crds уже не даст никак. При выбивании ошибки луа, она отображается за окном пилота, если он поверх всех окон - задалбывает еще больше, чем закрытие пилота после каждой остановки скрипта (IMG: style_emoticons/default/smile.gif) Ну и собственно утомило уже перезапускать пилот после каждой остановки, благо скрипты сохранятся при запуске отлично. Сообщение отредактировал DarkMaster - 14.9.2017, 15:07
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
18.9.2017, 12:37
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27738
Пользователь №: 11.279
|
Код crdsClear={{y=56,x=50,symbolName=3,}, {y=56,x=29,symbolName=2,}, {y=56,x=99,symbolName=2,}, {y=56,x=9,symbolName=5,}, {y=56,x=69,symbolName=5,}, {y=56,x=19,symbolName=4,}, {y=56,x=59,symbolName=4,}, {y=56,x=89,symbolName=4,}, {y=56,x=40,symbolName=7,}, {y=56,x=80,symbolName=6,},}
tmp2={} ywf = 1 table.sort(crdsClear, function(a,b) tmp2[ywf]="" for i=1, #crdsClear, 1 do tmp2[ywf] = tmp2[ywf].."\t"..crdsClear[i].x end ywf = ywf + 1 if a.x <= b.x then log(a.x.." <= "..b.x.." true") else log(a.x.." <= "..b.x.." false") end return a.x <= b.x -- a.y <= b.y and end )
-- Собираем строку order="" log(#crdsClear) result = {[1]=""} for i=1, #crdsClear, 1 do order = order..crdsClear[i].x.." " result[1] = result[1].. crdsClear[i].symbolName end log(order) log(result[1]) Table.sort дает странный результат при <= если поменять: return a.x <= b.x на: return a.x < b.x то порядок приходит в норму. В чем проблема?
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
cirus |
19.9.2017, 2:16
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26747
Пользователь №: 16.971
Возраст: 29
|
Цитата Там нет одинаковых значений которые могли бы в итоге выдать разный результат log
Код 80 <= 50 false 69 <= 50 false 80 <= 69 false 29 <= 69 true 99 <= 69 false 69 <= 89 true 69 <= 59 false 9 <= 69 true 40 <= 69 true 19 <= 69 true 99 <= 69 false 69 <= 19 false 80 <= 89 true 99 <= 80 false 89 <= 99 true 19 <= 50 true 59 <= 19 false 50 <= 59 true 29 <= 50 true 40 <= 50 true 9 <= 50 true 50 <= 50 true 59 <= 50 false 50 <= 9 false 59 <= 19 false 40 <= 19 false 59 <= 40 false 29 <= 40 true 9 <= 40 true 40 <= 40 true 59 <= 40 false 40 <= 9 false 59 <= 19 false 29 <= 19 false 59 <= 29 false 9 <= 29 true 29 <= 29 true 59 <= 29 false 29 <= 9 false 59 <= 19 false 9 <= 19 true 10 9 19 59 29 40 50 69 80 89 99 5442735642 22 строка: 50 <= 50 true. Хз как оно сортируется. Из описания функции: Если параметр comp задан, то он должен быть функцией, которая для двух получаемых параметров возвращает true если первый из них меньше второго.По сути этим всё сказано, меньше, а не меньше или равно. Цитата return not (a.x > b.x) тоже бред возвращает. Тут что логичного? Дело не в логике, а принципе сортировки. Код
|
|
|
|
DarkMaster |
19.9.2017, 4:04
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27738
Пользователь №: 11.279
|
Цитата Sorts list elements in a given order, in-place, from list[1] to list[#list]. If comp is given, then it must be a function that receives two list elements and returns true when the first element must come before the second in the final order (so that, after the sort, i < j implies not comp(list[j],list[i])). Там вообще речи даже не идет про меньше или больше. Функция должна возвращать правду когда первый элемент должен идти перед вторым в финальном порядке. Более того не понимая принцип данного поведения невозможно без опасений использовать оператор, особенно при ветвистых условиях сортировки. Тут ведь дело даже не в =>, при разложении на: Код if val1 > val2 then return false else return true end Мы тоже получим ошибку. Конструкция то примитивнейшая, а поведение отнюдь не ожидаемое.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|