|
|
  |
Пожелания, Предложения по развитию сюда |
|
|
asdvo1ty |
21.10.2012, 19:21
|
  
Novice
Сообщений: 68
Регистрация: 11.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.240
Возраст: 18

|
Цитата(-AL- @ 21.10.2012, 14:47)  можно ли добавить конструкцию set workwindow windowfromcursor прямо в функции , работающие с окнами ? например : get color, FindImage, findcolor, move, Left и тд потому что между set workwindow windowfromcursor и вызовом функции может поменяться handle (в браузерах) активацию данной конструкции можно регулировать параметром, или создать специальное семейство функций с такой возможностью,
спасибо
А может, нужно просто написать так: Код set #linedelay linedelay set linedelay 0 set workwindow windowfromcursor get color #c 100, 100 set linedelay #linedelay И всё будет окей?
|
|
|
|
-AL- |
22.10.2012, 11:48
|
  
Novice
Сообщений: 50
Регистрация: 6.3.2011 Группа: Пользователи Наличность: 0
Пользователь №: 13.493

|
Цитата(asdvo1ty @ 21.10.2012, 19:21)  А может, нужно просто написать так: Код set #linedelay linedelay set linedelay 0 set workwindow windowfromcursor get color #c 100, 100 set linedelay #linedelay И всё будет окей? если скрипт будет поставлен на паузу именно после set workwindow windowfromcursor то есть вероятность что к get color #c 100, 100 handle будет уже другой, поскольку ставящий на паузу скрипт также может иметь set linedelay 0, и скорее всего так и будет, так как это будет скрипт события с высоким приоритетом, и чтобы ему не мешать остальные скрипты должны иметь linedelay > 0 ---- коль скоро функциям работающим с окном нужен handle , то самый надежный вариант - если они определят его сами : по курсору, по abs координатам, по имени окна, не важно, важно, чтобы ни какой процесс не вклинился между определением handle и действием функции, ---- либо так и придется городить конструкции с set linedelay 0 перед каждым вызовом оконной функции и надеяться на удачное стечение обстоятельств.
|
|
|
|
xolost |
22.10.2012, 14:12
|
     
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035

|
Цитата(xolost @ 21.10.2012, 13:28)  одно пожелание.
Добавить в findimage возможность возврата %ResultArray высоту и ширину или конечные координаты найденной картинки Т.е. сейчас возвращаются только координаты %ResultArray[1 1] Начало картинки по X и %ResultArray[1 2] начало картинки по Y А сделать что бы ещё %ResultArray[1 3] ширина и %ResultArray[1 4] высота писались ИЛИ %ResultArray[1 3] конечные координаты по Х и %ResultArray[1 4] конечные координаты по Y Наткнулся на надобность такой фичи, когда начал писать более серьезных ботов. Спасибо.
По этому поводу хочу пример привести, почему это будет полезно. Есть 100 объектов Каждому из них задаем вручную ширину и высоту (100*2 = +200 строчек) Теперь ищем объект, который на экране for #object 1 100 set $dialog findimage (#startX #startY #endX #endY ($path#object$bmp) %crds 2 100 -1) if $dialog > 0 формула между параметрами выс.шир. и координатами найденными. ит.д. действие end_for Итого как минимум 206 строчек. А если к возврату добавить конечные координаты или выс.шир. то 200 строчек указывать не нужно будет! согласитесь, что это весомо...
|
|
|
|
xolost |
22.10.2012, 16:49
|
     
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035

|
Цитата(_LESTAT_ @ 22.10.2012, 17:05)  Размер самой картинки мы и так знаем, так как делали ее сами.
Ну хорошо. Вот ты нарезал одну картинку, ты знаешь что размер её 100(ширина) на 40(высота). Пилот откуда об этом узнает? А узнать ширину и высоту мне необходимо для конечной цели - действия с этой картинкой. Например, я хочу кликнуть в самый центр картинки. Строго в центр. Как мне это сделать? Мне нужно изначально указать ширину и высоту искомой картинки, верно? А теперь представь, что картинок 100 или ещё больше, то это нужно 200+ строчек в скрипте прописать с указанием этих данных? Верно понял то что понял сперва?
|
|
|
|
asdvo1ty |
22.10.2012, 18:15
|
  
Novice
Сообщений: 68
Регистрация: 11.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.240
Возраст: 18

|
Цитата(-AL- @ 22.10.2012, 12:48)  если скрипт будет поставлен на паузу именно после set workwindow windowfromcursor то есть вероятность что к get color #c 100, 100 handle будет уже другой, поскольку ставящий на паузу скрипт также может иметь set linedelay 0, и скорее всего так и будет, так как это будет скрипт события с высоким приоритетом, и чтобы ему не мешать остальные скрипты должны иметь linedelay > 0 ---- коль скоро функциям работающим с окном нужен handle , то самый надежный вариант - если они определят его сами : по курсору, по abs координатам, по имени окна, не важно, важно, чтобы ни какой процесс не вклинился между определением handle и действием функции, ---- либо так и придется городить конструкции с set linedelay 0 перед каждым вызовом оконной функции и надеяться на удачное стечение обстоятельств.
Можно ни на что не надеяться, а изменить свой скрипт, ставящий на паузу, так, что если в скрипте, который ему надо приостановить, linedelay == 0, то он должен ожидать изменения этой переменной, а только потом ставить на паузу. А уж про "городить" могу ответить следующее. Такова концепция Пилота. Чем больше и сложнее задача, тем больше нужно "городить", даже если вещи, которые нужно делать, на самом деле простые. И это не пустые слова, всё проверено на практике. Даже такие вещи, как ожидание 250мсек + рэндом(0-100) требует (ну, или раньше требовало, по крайней мере) написания действия в несколько строк, вместо, казалось бы, логичных wait 250 + random(100). Пардон. Сейчас уже конкретно с этим действием всё нормально, но раньше, если мне не изменяет память, было не так. А лично моё недовольство сего заключается в том, что синтаскис скриптинга, мягко говоря, ущербен, без должной подсветки и возможностей. Поэтому мало того, что приходится городить, так ещё и выглядит это всё ужасно, копаться потом в этом коде неприятно и etc.
|
|
|
|
asdvo1ty |
22.10.2012, 19:02
|
  
Novice
Сообщений: 68
Регистрация: 11.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.240
Возраст: 18

|
Цитата(Destruction @ 22.10.2012, 19:31)  Предлагаю агитировать за прикручивание к пилоту скриптового движка типа node.js :-)
Насколько мне известно, это было моё предложение и только моё - прикрутить нормальный скриптовый язык либо изменить этот так, чтобы не был убог был по-приятнее. А предлагал несколько месяцев назад. И получил в ответ вот это: Цитата(WKnight @ 20.8.2012, 15:30)  Было предложение прикрутить паскаль, он всеже понятней большинству чем язык пилота, но я пока даже его не ковырял, не говоря уже о других языках. Не стал продолжать разговор, потому что, ИМХО, модифицировать недопаскаль до паскаля не имеет смысла. И, кстати, nodeJS - это же серверный язык, если не ошибаюсь... А вот V8 - то, что нужно. Но это пока мечты (IMG: style_emoticons/default/smile.gif) P.S.: Сам уже давно не пользуюсь Пилотом именно по этой причине. Сообщение отредактировал asdvo1ty - 22.10.2012, 19:19
|
|
|
|
Destruction |
22.10.2012, 21:02
|

         
Группа: Администраторы Наличность: 0
Пользователь №: 1.833

|
Цитата(asdvo1ty @ 22.10.2012, 20:02)  И, кстати, nodeJS - это же серверный язык, если не ошибаюсь... А вот V8 - то, что нужно. Но это пока мечты (IMG: style_emoticons/default/smile.gif) 1. Язык не бывает "серверным", а вот программы написанные на нем - вполне себе могут быть. 2. node.js - это V8 с приколами. Не вижу смысла использовать V8 без приколов.. ) Цитата(asdvo1ty @ 22.10.2012, 20:02)  Насколько мне известно, это было моё предложение и только моё - прикрутить нормальный скриптовый язык либо изменить этот так, чтобы не был убог был по-приятнее.
Вы неправы. Мое предложение прикрутить что-нибудь приличное без жесткой типизации должно датироваться эдак 2005ым годом )
--------------------
Telegram: @tatikom
|
|
|
|
asdvo1ty |
22.10.2012, 22:43
|
  
Novice
Сообщений: 68
Регистрация: 11.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.240
Возраст: 18

|
Цитата(Destruction @ 22.10.2012, 22:02)  1. Язык не бывает "серверным", а вот программы написанные на нем - вполне себе могут быть. 2. node.js - это V8 с приколами. Не вижу смысла использовать V8 без приколов.. )
Я думал, там "приколы" специально для того, чтоб на языке серверные приложения писать, не? Надо поковырять его) Цитата(Destruction @ 22.10.2012, 22:02)  Вы неправы. Мое предложение прикрутить что-нибудь приличное без жесткой типизации должно датироваться эдак 2005ым годом )
О, меня тут ещё не было тогда (IMG: style_emoticons/default/smile.gif)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|