|
Автопривязка Пилота К Окну |
|
|
saraconor |
12.12.2009, 14:03
|
Novice
Сообщений: 72
Регистрация: 30.10.2009 Группа: Пользователи Наличность: 0
Пользователь №: 12.180
|
Цитата(WKnight @ 11.12.2009, 6:59) Код set #a findwindow (notepad) if #a > 0 set workwindow #a end_script else msg Can't find notepad window. end_script end_if ничего не вышло. кстати, как быть если нужно заатачить 2 разных скрипта к 2-м разным окнам линейки? при том что называются они одинаково Lineage II, а PID постоянно меняется при запуске новых окон.
|
|
|
|
saraconor |
12.12.2009, 19:04
|
Novice
Сообщений: 72
Регистрация: 30.10.2009 Группа: Пользователи Наличность: 0
Пользователь №: 12.180
|
Цитата(Soteric @ 12.12.2009, 14:13) На счет блокнота. Там разве не по заголовку окна идет поиск? Соответственно не "notepad", а что-нить вроде "Текстовый документ - Блокнот". Я впрочем могу ошибаться, но каг бе вроде оно вот как-то так
да ты прав. а как тогда быть с 2 одинаковыми окнами линейки? они же называются одинаково в процессах.
|
|
|
|
saraconor |
13.12.2009, 1:02
|
Novice
Сообщений: 72
Регистрация: 30.10.2009 Группа: Пользователи Наличность: 0
Пользователь №: 12.180
|
а как вообще можно из пилота копатся в памяти приложения? про такое слышал, но в хелпах не нашел объяснений. вот например я так понимаю: в памяти мелькает чат, и нужно например в этом чате найти слово "пирожок", ну скажем цикл крутится, ищет пирожок, а как только найдет -stop_script -как это сделать? (процесс Lineage II, путь D:\софт\l2.exe) зачем нужна кнопка "?" в хелповом меню? для чего нужны массивы? Цитата(Destruction @ 12.12.2009, 19:50) Самый правильный вариант будет наверное атачиться во время запуска.
Таким образом можно будет заатачив один скрипт, во втором найти другое окно. Но тут соответственно потребуется запускать окна в определенном порядке, чтобы скрипты атачились к правильным окнам.
новые процессы ложатся один поверх другого так?
|
|
|
|
WKnight |
13.12.2009, 7:27
|
Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006 Группа: Пользователи Наличность: 0
Пользователь №: 4.688
|
Кстати ... Код set $caption Безымянный - Блокнот set #a findwindow ($caption) if #a = #a.5 set #a getwindow ( #a first ) set $var getwindowtext (#a) while ($var <> $caption) and (#a > 0) or (#a = #a.5) set #a getwindow ( #a next ) set $var getwindowtext (#a) end_while if #a > 0 set workwindow #a showwindow end_if end_if end_script
В данном случае окна делятся со скриптом №5. 'readmem <variable> <adress> <type> <size>'. читает с указанного адреса переменную указанного типа. Вспоминая ультиму, могу сказать, что окошко чата найти будет скорее всего не очень просто... Правда сложность поиска никак не связана с данной командой (IMG: style_emoticons/default/smile.gif) "?" нужна для поиска параметров персонажа и последнего сообщения от сервера игры Ультима Онлайн, в полуавтоматическом режиме. Про массивы вопрос к Дестракшену, он на них собаку съел (IMG: style_emoticons/default/smile.gif) В данном случае нас интересуют скорее не процессы а окна, их порядок меняется при переключении окон.
|
|
|
|
saraconor |
14.12.2009, 4:22
|
Novice
Сообщений: 72
Регистрация: 30.10.2009 Группа: Пользователи Наличность: 0
Пользователь №: 12.180
|
Цитата(WKnight @ 13.12.2009, 7:27) 'readmem <variable> <adress> <type> <size>'. читает с указанного адреса переменную указанного типа.
можно подробнее с примером? readmem - команда, тут все ясно variable - не понятно совсем, какие-то вариации... adress - я так мпонял что это путь к папке где игра лежит? type - какой тип процесса в таком случае ищется? что нужно писать? ddl, bsa, или еще что? size - для чего нужен этот параметр, и нужно ли вообще его указывать? скобочки <> нужны и работают как разделители так? или можно без скобок вот... извини, синтаксис я выучил только на половину от силы) с памятью вообще не работал не разу.
|
|
|
|
saraconor |
14.12.2009, 12:34
|
Novice
Сообщений: 72
Регистрация: 30.10.2009 Группа: Пользователи Наличность: 0
Пользователь №: 12.180
|
Цитата(WKnight @ 14.12.2009, 9:10) readmem #dl 0x073BAA8 byte
где тут адрес? что такое 0x073BAA8 и где это найти? где тут тип? фактически в скрипте присутствует команда которая чтото привязывает к переменной #dl -больше ничего не понятно. причем #dl ведь переменная, и по твоему синтаксису ей место после адреса, в таком случае где адрес? Уважаемый Дестракшен, расскажите пожалуйсто о массивах, их реальное применение, если можно то с примером и отвлеченным сравнением (для доходчивости)
|
|
|
|
crax |
26.1.2010, 11:50
|
Neophyte
Сообщений: 23
Регистрация: 21.12.2009 Группа: Пользователи Наличность: 0
Пользователь №: 12.317
|
А у меня такая проблема: в заголовке окна присутствует "©" и никак пилот не хочет находить окно. По PID находит отлично и после смены названия заголовка тоже все ок. Можно ли как-то изменить заголовок насомвсем (чтобы при запуске приложения было название без "©"?) или научить пилот распознавать этот значек? ) заранее благодарю за ответ (IMG: style_emoticons/default/smile.gif)
|
|
|
|
DarkMaster |
26.1.2010, 21:07
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Цитата добавил функцию 'FindWindow (<заголовок окна | PID>)'. возвращает хендл окна, необходимый предыдущей команде. заголовок окна следует указывать полностью, с соблюдением регистра символов. если нужное окно не найдено, то регистронезависимо ищем указанную строку в начале названия всех окон. поиск в скрытых окнах зависит от состояния переключателя "Показывать все окна". если опять ничего не нашли, то считаем, что указан PID процесса и ищем первое попавшееся окно этого процесса. Как вариант можно указать кусок текста ДО @. По идее окно будет найдено... Правда если кусок очень маленький, то теоретически можно найти неправильное окно, начинающееся на те же буквы.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|