Помощь - Поиск - Пользователи - Календарь
Полная версия: Новая Версия Uopilot v.2.38 (21.06.2016)
UoKit.com Форумы > Кликер > UO Pilot
Страницы: 1, 2, 3, 4
WKnight
Пожертвовать на дальнейшее развитие:
Изображение
Рубли: R849464451336
Гривны: U145931779718
Доллары: Z353114408274

Изображение
410011422550405


Для пожеланий и багов открыт специальный багтреккер.
Крайне рекомендуется писать сообщения с соответствующим содержанием именно туда. В противном случае ваш пост будет промодерирован и вручную будет создана копия на багтреккере.

https://redmine.uokit.com/projects/uopilot/issues



--v.2.38--

Исправил определение имени переменной в команде 'set'.

Исправил ошибку подгрузки массива с частично пустыми значениями в команде 'load_array'.

Исправил усечение существующего массива при подгрузке нового в команде 'load_array'.

Исправил изменение регистра первого элемента, при присваивании массива в команде 'init_arr'.

Исправил ошибку, возникающую при остановке скрипта, в процессе эмуляции кликов мышкой.

Исправил ошибку, возникающую при выводе в лог больших объемов информации. Выводим в лог кусками по 16 кб. В файле лога в месте соединения будет перевод строки.

Подправил пример плагина, добавил в него возврат значений вторым способом.

Исправил команду 'ExecAndWait', слегка сломанную в 2.36.

Исправил команду 'filegetattr'. Не работала.

Исправил ошибку, возникающую при отсутствии пробела перед скобкой после имени команды.

Подправил команду 'dir', у каталогов больше не обрабатывается расширение.

Сделал сохранение расположения окна справки на экране.

Добавил хелп с Wiki. Вызывается по "F1" на операторе в скрипте или вверху меню по ПКМ в скрипте. Отображается на новой закладке на форме справки. Скачивает странички непосредственно с Wiki, хранит в папке "Help", рядом с пилотом. Если папки "Help" рядом с пилотом нет, то распаковывает архивную версию.

Сделал подсветку переменных массивов цветом соответствующих операторов.

Исправил незапланированный вывод в лог устаревшего сообщения об ошибке.

Добавил команду удаления элементов массива 'delete_array %array [+col | -row] [count=1]'.

Исправил команду 'findcolor'. При поиске по хэндлу возвращал неправильную координату "y" (вычитал стартовую).

Подправил форматирование скрипта.

Исправил функцию 'string_count', неправильно считала.

Исправил вывод в лог сообщений об ошибках при включенной галочке "Выводить сообщения в... Log".




скачать uopilot 2.38

скачать AntiFrost
скачать AntiGate
пароль на архивы: uopilot.uokit.com
DarkMaster
Тестим хелп. Я доволен smile.gif
Cockney
Заочно скажу за хелп - почти так и хотел. а в вики бы побольше живых примеров...
DarkMaster
Цитата
в вики бы побольше живых примеров...

Кто не дает? Пиши. Публичный логин и пароль в теме вики выложен. Хочешь персональный? Скинь в личку - зарегаю.
Вика на то и вика, чтобы писать ее всем. Вон Cirus проделал просто огромную работу и за месяц вика преобразилась.
Cockney
Я же не пишу на пилоте) + вы знаете намного больше рядового пользователя, в т.ч. меня.

---
Ни в коем случае не выражаю недовольство и не указываю, просто смотрю глазами обычного новичка.
Cockney
Добавить отображение процесса при нажатии Перекачать все с вики.
DarkMaster
Цитата
Я же не пишу на пилоте) + вы знаете намного больше рядового пользователя, в т.ч. меня.

Ой какие мы скромные сразу стали.
TemTriss
Цитата

Исправил команду 'findcolor'. При поиске по хэндлу возвращал неправильную координату "y" (вычитал стартовую).

Блин)) А я думал у меня руки кривые)) Сегодня потестю smile.gif)
TemTriss
Цитата(TemTriss @ 22.6.2016, 1:10) *

Блин)) А я думал у меня руки кривые)) Сегодня потестю smile.gif)

Хм... а может и я криворукий. Не отрабатывает, как с абсолютными так и с относительными координатами
Абсолютные координаты
Нажмите для просмотра прикрепленного файла
Относительные
Нажмите для просмотра прикрепленного файла

P.s. А спойлеры не работают?((( удобно было бы картинки под спойлер прятать smile.gif)

Добавил проверку
else
set #test color (#x #y workwindow)
log #test

показывает другой цвет, но отрабатывает в перекрытом окне, но к сожалению через раз. В лог посыпались сообщения с цветом(когда окно не перекрыто лог пишет, что цвет 2301470 всегда), переодически проскакивает цвет из окна которое поверх.
15:30:16 0 (test.txt, 9): 2301470
15:30:17 0 (test.txt, 9): 2301470
15:30:18 0 (test.txt, 9): 2301470
15:30:19 0 (test.txt, 9): 16777215
15:30:20 0 (test.txt, 9): 2301470
и так каждые 5-7 тиков.
DarkMaster
Спойлеры работают.

Скрины в бмп 24 бита, код в виде кода.
TemTriss
Цитата(DarkMaster @ 22.6.2016, 15:33) *

Спойлеры работают.

Скрины в бмп 24 бита, код в виде кода.

Да там кода-то 10 строчек.
Вот он, чуть выше сообщение отредактировал. Добавил проверки и написал их результат.
Код
set #handleWin findwindow("MEmu 2.7.0 - MEmu_1")
set workwindow #handleWin
set #x 58
set #y 27
set #clr 3430269
if color (#x #y workwindow) = #clr
log цвет совпал, даже в перекрытом окне
else
set #test color (#x #y workwindow)
log #test
end_if
DarkMaster
а при
log color (#x #y workwindow)
что выдает?
TemTriss
Цитата(TemTriss @ 22.6.2016, 15:06) *

Добавил проверку
else
set #test color (#x #y workwindow)
log #test

показывает другой цвет, но отрабатывает в перекрытом окне, но к сожалению через раз. В лог посыпались сообщения с цветом(когда окно не перекрыто лог пишет, что цвет 2301470 всегда), периодически проскакивает цвет из окна которое поверх.
15:30:16 0 (test.txt, 9): 2301470
15:30:17 0 (test.txt, 9): 2301470
15:30:18 0 (test.txt, 9): 2301470
15:30:19 0 (test.txt, 9): 16777215
15:30:20 0 (test.txt, 9): 2301470
и так каждые 5-7 тиков.

Вот
DarkMaster
1) сделать поиск по цвету 2301470 в неперекрытом окне, чтобы понять куда идет смещение.
2) Почему проскакивает белый цвет - не знаю. Удостоверьтесь, что это именно окно, которое поверх. Например попробуйте поперемещать окно поверх и посмотрите будет ли меняться цвет.

Возможно из-за пункта 1 мы имеем пункт 2, т.к. в игре смотрится ошибочная координата.
WKnight
findcolor и color абсолютно разные функции.
color в данной версии по-моему не трогался, но это не мешает выяснить что с ним.
Cockney
Цитата(DarkMaster @ 21.6.2016, 21:18) *

Ой какие мы скромные сразу стали.



Ни в коем случае.
TemTriss
Цитата(DarkMaster @ 22.6.2016, 16:21) *

1) сделать поиск по цвету 2301470 в неперекрытом окне, чтобы понять куда идет смещение.

Как я понял это должно выглядеть примерно так?
Код
set #handleWin findwindow("MEmu 2.7.0 - MEmu_1")
set workwindow #handleWin
set #x 58
set #y 27
set #clr 3430269
if color (#x #y workwindow) = #clr
log цвет совпал, даже в перекрытом окне
else
// set #test color (#x #y workwindow)
// log #test
set #fclr findcolor (50 25, 68 30 1 1 (2301470) %mas 2)
if #fclr > 0
log #fclr
set #M1 1
for #i 1 #fclr 1
log x: %mas[#M1, 1], y: %mas[#M1, 2]
set #M1 #M1 +1
end_for
end_if
end_if

если да, то указанный мной диапазон поиска - 19х6 = 114
и если я правильно понял, то #fclr - должен вернуть кол-во найденных пикселей и он сразу пишет 114...
ну и соответственно в логе перебираются все пиксели в указанном диапазоне.

Вот, я наконец-то по ходу разобрался.
приложу скрин
Нажмите для просмотра прикрепленного файла

Как я понял это считается как 2 разных окна.
т.к. пилот делает отсчет от 1 до 29(размер полоски - заголовка)
и потом заново начинает отсчет с нуля и по клику ctrl+a показывает 2 разных хэндла.
Так что косяк все же у меня. Но вот исходя из этого возник вопрос. А как мне найти хэндл этого окна/не окна/хз что это. И привязать его как ворквиндоу.
P.s. привязывать в окне пилота не вариант. Программа за частую крэшится и в скриптовой части у меня прописан ее перезапуск, следовательно хэндл уже будет другой. В данный момент мой скрипт работает на абсолютных координатах, но вот хочется его переписать

P.s.1 сори продолжение не много не по теме.
DarkMaster
посмотреть дерево окон, если будут проблемы, то в развернутом виде дерево приложения сюда скрином.
https://forum.uokit.com/index.php?act=Attac...ost&id=1171

решение 1
http://forum.uokit.com/index.php?showtopic=26742
решение 2
https://forum.uokit.com/index.php?showtopic=28991
TemTriss
Сообщение потер.
Думал разобрался, оказалось нет.
продолжаю эксперементировать с окнами(
cirus
Смещение между окнами можно узнать этим.
код
Код
log mode compact
set linedelay 1
set #a desktopwidth / 3
set #b desktopheight / 3
set #handlePilot WindowHandle
set workwindow 0
showwindow #handlePilot
while workwindow = 0
    hint (32 clBlack #a #b(Укажите Родительское окно (Ctrl + A)))
end_while
set #handle1 workwindow
set workwindow 0
while workwindow = 0
    hint (32 clBlack #a #b (Укажите Дочернее окно (Ctrl + A)))
end_while
set #handle2 workwindow
set workwindow 0
get windowpos #handle1 #X #Y #width #height #result
get windowpos #handle2 #X1 #Y1 #width1 #height1 #result1
set #x #X1 - #X
set #y #Y1 - #Y
hint (32 clBlack #a #b 390 70 (Смещение abs(#x) abs(#y)))
log Смещение abs(#x) abs(#y)
End_script

Создайте отдельную тему. К 2.38 всё это не имеет никакого отношения.
TemTriss
Поробую еще раз с начала. С скринами и кодом.
Вот проверочный код.
Код

set workwindow 852584
set #x 58
set #y 27
if color (#x #y workwindow) = 3430269
log цвет совпал, даже в перекрытом окне
else
set #test color (#x #y workwindow)
log #test
set #fclr findcolor (50 25 68 60 1 1 (3430269) %mas 2)
if #fclr > 0
log #fclr
set #M1 1
for #i 1 #fclr 1
log x: %mas[#M1, 1], y: %mas[#M1, 2]
set #M1 #M1 +1
end_for
end_if
end_if

Вот скрин всех окон
Нажмите для просмотра прикрепленного файла
Код

set #test color (#x #y workwindow)
log #test

выдает всегда 0
findcolor отрабатывает и находит координату только в случае если указан хэндл окна
RenderWindowWindow
вот строчки из лога
Код
x: 58, y: 27

или если хэндл окна MainWindowWindow в этом случае к y координате +30
В остальных случаях #fclr возвращает 0 - не найдено пикселей указоного цвета.
И вот почему не отрабатывает color не понимаю.
Перепробовал все окна методом тыка.
cirus
Несколько раз была ошибка при закрытии пилота. Скорее всего, как-то связано со справкой.
Нажмите для просмотра прикрепленного файла
cirus
Код
set %arr[1 1] Test
set %arr[2 2] Test
set %arr[3 3] Test
set %arr[4 4] Test
set %arr[5 5] Test
set %r indexOf (%arr noabs case 2 4 (Test))
for #i 1 size(%r)
    log %r [#i 1] %r [#i 2]
end_for
End_script

Получим в логе:
2 2
3 3
4 4
5 5
При том что startRow = 2, endRow = 4, т. е должно искать только во 2-4 строках. Похоже что endRow воспринимается как count.
С count вообще не понятно как оно работает.
Код
set %arr[1 1] Test
set %arr[2 2] Test
set %arr[3 3] Test
set %arr[4 4] Test
set %arr[5 5] Test
   //Пример из справки:
set #a indexOf ( %arr case -1 (Test) ) // ищет номер последнего элемента массива %arr, имеюшего значение в точности равное Test (с учетом регистра)
log #a
End_script

Последняя строка 5, возвращает 1.
cirus
Нажмите для просмотра прикрепленного файла
Исправить s$ на $s. Добавить trim.
DarkMaster
Цитата
Исправить s$ на $s. Добавить trim.

Это где?
cirus
Цитата
Это где?

Меню ПКМ.
cirus
Исправить установку размеров при открытие лога, если он открывается первый раз после запуска пилота.
Код
log open 0 0 500 300     //откроет с размерами 279 332
End_script
WKnight
По просьбам трудящихся сделал выкладывание текущей рабочей версии на сайт, автоматически при компиляции проекта.
Ссылка есть на хомпейдже, сразу под ссылками на релиз.
Это даже не бета. Это то, над чем проводится работа. Одна версия может отлично работать, другая не работать совсем. Обычно работает. Также обычно нет хистори.
Cockney
Хотябы основные фичи бы были написаны, а то что смотреть - непонятно. И если можно вместо приписки night(или каких либо других) писать номер билда.
WKnight
Пока отлаживаем батники, облагораживаем. В настоящий момент если где-то в темах написано "фиксед", или что-то решилось на багтрекере, то оно есть в сборке.
Номер билда имеется ввиду у самого скачиваемого пилота? Подумаем.
Cockney
Да. uopilot_002b.exe, например.
NexTurbo
для Last Chaos ру офф рабртает?
Andrey1995
Цитата(NexTurbo @ 5.9.2016, 2:50) *

для Last Chaos ру офф рабртает?

Пару дней назад перестал работать в LC, после обновы x-trap
Cockney
Кнайт, ну это не дело, по темам искать что вошло в билд очень неудобно. Краткий чейнджлог нужен обязательно.
WKnight
На русской версии странички есть полный ченьжлог. До английской врятли доберусь, это уже на релиз похоже будет smile.gif
Cockney
Спасибо.
BSW_rama
set #f3 2
set #f5 -111
if #f5 <> 0
set #f8 #f3 / #f5
end_if

мы не умеем делить на отрицательные числа??????
cirus
Код
set #f3 2000
set #f5 -111
set #f8 #f3 / (#f5)
log #f8
end_script

Для дробных чисел есть плагин https://forum.uokit.com/index.php?showtopic=29139
WKnight
night version, 03.10.2016 Build 020

Добавил функцию запоминания части экранной области 'GetImage (StartX StartY EndX EndY [type|handle] [abs])'. Возвращает строку в виде "Адрес в памяти|Ширина|Высота|Длина строки в байтах/", либо:
-1 - упало при поиске, точная причина не известна;
-2 - не нашли открывающую скобку после имени функции;

Добавил функцию удаления запомненной части экранной области 'DeleteImage (address)'. Возвращает :
1 - удачно;
0 - не найдено;
-1 - упало при поиске, точная причина не известна;
-2 - не нашли открывающую скобку после имени функции;
-3 - адрес не распознан.

Переделал функцию 'findimage'. В качестве типа поиска принимает адрес из функции 'GetImage'. Координаты в функции 'findimage' указываются относительно части экрана, сохраненной в функции 'GetImage', но возвращаются относительно привязанного окна\экрана.

Код
        set %a GetImage  ( 100 100 1000 1000 )
        set #v %a [1 1]
        set $a findimage ( 51 51 1403 1403 (C:\test.bmp) %arr #v 80 1)
        set $b DeleteImage  ( %a [1 1] )
Cockney
В чем прикол возвращать координаты относительно привязки, когда поиск идет в памяти ? Искали в окне, значит относительно окна. Искали в памяти, значит относительно размеров скрина в памяти.


Длина строки в байтах зачем вообще ?

И да, ну почему нельзя выделить еще одну команду, например, memfind. Ну зачем все в тип поиска пихать ? К чему этот костыль вообще ? Это же безумие какое-то. Да, будет больше конструкций, но за то сразу понятно что и как нужно указывать и какой это результат дает.
DarkMaster
Цитата
В чем прикол возвращать координаты относительно привязки, когда поиск идет в памяти ? Искали в окне, значит относительно окна. Искали в памяти, значит относительно размеров скрина в памяти.

Для прозрачности кликов в относительные координаты. Есть идеи как это все слепить учитывая возможно поиск относительных координат и возможность скрина части привязанного окна - с радостью выслушаем. Мы пришли к такому выводу на данный момент. Я предлагал как вариант возвращать две пары координат.
WKnight
Цитата
В чем прикол возвращать координаты относительно привязки, когда поиск идет в памяти ? Искали в окне, значит относительно окна. Искали в памяти, значит относительно размеров скрина в памяти.
Методом проб и ошибок, пришли к выводу, что лишняя математика при наиболее часто используемых функциях будет слегка напрягать. Для реже используемых вопрос решается двумя строками кода.
Если у кого-то есть лучшее предложение, с удовольствием выслушаем.
Цитата
Длина строки в байтах зачем вообще ?
Обычному пользователю не нужна. Это если кто самостоятельно напрямую к данным обращаться будет, например из плагина.
Цитата
И да, ну почему нельзя выделить еще одну команду, например, memfind. Ну зачем все в тип поиска пихать ? К чему этот костыль вообще ? Это же безумие какое-то. Да, будет больше конструкций, но за то сразу понятно что и как нужно указывать и какой это результат дает.
Это не костыль, а дополнение. По-моему достаточно хорошо вписывается.
Если требуется, могу добавить команду memfind, с 99 процентами идентичного findimage кода.
Cockney
Цитата
Методом проб и ошибок, пришли к выводу, что лишняя математика при наиболее часто используемых функциях будет слегка напрягать. Для реже используемых вопрос решается двумя строками кода.
Если у кого-то есть лучшее предложение, с удовольствием выслушаем.


У себя в голове я не могу представить ситуацию, в которой юзер ищет в памяти (предположим окно игры) что-то, находит, и по координатам, которые вернулись (а координаты именно найденного объекта в памяти, а не в впривязанном окне), делает клик в привязанное окно. Я не догоняю, почему нельзя просто использовать findimage. Если можно, то развернутый пример.

Цитата
Это не костыль, а дополнение. По-моему достаточно хорошо вписывается.
Если требуется, могу добавить команду memfind, с 99 процентами идентичного findimage кода.


Вот именно, что костыль. Скриптовый язык и отличается от полновесного тем, что скрывает многие аспекты работы с чем-то. Конечному пользователю не важно сколько там повторяющегося кода и сколько ненужной фигни. Ему интересен результат. А конкретнее некий стандарт, о который он может опираться. Взглянул на вики, ага, тут тип поиска 1 или 2. Все просто. А как воспринимать нормально код, где в одном скрипте тип поиска 2, а в другом адрес памяти ? Это сложно визуально, а тем более при обучении. Лучше иметь 10-15 функций с разными параметрами, чем 2 с 3 параметрами по 10 вариаций.

Ни в коем случае не навязываю свое мнение. Я просто смотрю глазами pilot-новичка.

Цитата
Обычному пользователю не нужна. Это если кто самостоятельно напрямую к данным обращаться будет, например из плагина.


Вот зачем ? ну зачем ? сделай апи для плагинов. Да, это делать сложнее и дольше, однако ты и так это делаешь просто быстро и в более кривом варианте.
cirus
Цитата
Я не догоняю, почему нельзя просто использовать findimage. Если можно, то развернутый пример.

На счёт кликов примеров не приведу, но другой могу:
l2, надо проверить наличие 20 бафов и 10 денсов, итого 30 картинок. Если использовать обычный Findimage на это уйдёт 500мс. И это много, т . к. ещё есть другие проверки.
Теперь же получаем изображение экрана и ищём на нём 30 картинок. И работает это гораздо быстрее. Вместо 500мс потребовалось 50мс.
DarkMaster
Цитата
На счёт кликов примеров не приведу, но другой могу:
l2, надо проверить наличие 20 бафов и 10 денсов, итого 30 картинок. Если использовать обычный Findimage на это уйдёт 500мс. И это много, т . к. ещё есть другие проверки.
Теперь же получаем изображение экрана и ищём на нём 30 картинок. И работает это гораздо быстрее. Вместо 500мс потребовалось 50мс.

Заменим л2 на вов в котором не все баффы полезные и просто сделаем клик пкм по тому, который нужно снимать.
WKnight
night version, 04.10.2016 Build 025 181

Отлючил по-умолчанию галочку "Возвращать курсор мыши после кликов".

Вынес 'findcolor' из потока пилота, теперь оно меньше подтормаживает сам пилот.

Исправил функцию 'findwindow'. Ничего не находила при нажатых клавишах "Alt+Tab".

Команду 'Exec' переделал по типу 'ExecAndWait'. Теперь переменная 'errorlevel' содержит PID запущенного процесса.

Добавил возможность задавать зарезервированные переменные, читаемые из памяти клиента. Имя переменной и цепочка адресов задается в файле конфигурации, в секции "[CustomVariables]" в формате "имя=адрес,тип читаемых данных;прибавляемое значение,тип читаемых данных;".
Пример: wow=0xB4B2BC,d;0x65B8,d;0x40,f;
Скрипт: set wow wow + 1

Добавил описание изменений "ночной сборки" во встроенную справу в пилоте.
Cockney
Не надо в справку добавлять чейндлог беток.

Добавь резервирование просто каким либо значением.
DarkMaster
Цитата
Добавил возможность задавать зарезервированные переменные, читаемые из памяти клиента. Имя переменной и цепочка адресов задается в файле конфигурации, в секции "[CustomVariables]" в формате "имя=адрес,тип читаемых данных;прибавляемое значение,тип читаемых данных;".
Пример: wow=0xB4B2BC,d;0x65B8,d;0x40,f;
Скрипт: set wow wow + 1

А можно тоже самое внутри скрипта объявить?
WKnight
Пока нет. Еще не продумал механизм добавления\использования.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.