Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - K7A4

Pages: [1]
1
Общие вопросы / Re: Вопросы новичка
« on: March 13, 2015, 03:26:35 PM »
Подскажите, пожалуйста, как правильнее все в скрипте закрыть окно (например - с браузером)?
Причем в идеале с результатом - закрыто или нет (зависло, пока еще не закрыто и т.д.)

Вижу варианты:
1. Кликнуть на крестик в правом верхнем углу. Но разве что ждать пропадания этого крестика.
2. Выдать в окно ALT+F4. Но как проверять - вообще не понятно.
3. Может быть можно как-то через SENDMESSAGE, POSTMESSAGE? Но как? И как узнать закрылось или нет?

Заранее спасибо.

2
Там для выхода действительно нужно добавить только одну строку
Code: (clickermann) [Select]
FOR($i=0,$i < ArrSize($Arr)-1)
   If($Arr[$i] < $Arr[$i+1])
      $i = ArrSize($Arr)
   End_If
END_CYC
Vint, а мне понравилось твое предложение по замене break на $i=ArrSize($Arr).
Красиво!
Спасибо за мысль )

PS: в жизни всегда есть завистники, однако проще всего их просто не замечать и игнорировать )

3
Приведенный мною выше кусок кода можно попробовать переписать:
Code: (clickermann) [Select]
$Continue=1
For($i=0,($i<ArrSize($Arr))&$Continue)
   $Continue=$Arr[$i]<$Arr[$i+1]
End_Cyc
но я уже боюсь за $Continue=$Arr[$i]<$Arr[$i+1] - можно ли так в ClickerMann'е?

4
Oraven, спасибо за конструктивизм и конкретику (в отличии от балабольства выше), но, сорри, ты само название темы видел?
Твое выделенное жирным шрифтом выражение должно выглядеть так: For($i=0,(49<49)&([49]<[50])), однако я небезосновательно рассчитываю, что выражение [49]<[50] не должно даже начинать вычисляться после тога как 49<49=ЛОЖЬ.

Vint, "Дели на 2 условия и всё": всё, да не всё.
А если в массиве не 5, 10 или 50, а 10 тыс. элементов?
А если он сам во втором цикле еще на 10 тыс. повторов, и это внутри нескольких сотен проходов?
Мне надо чтобы цикл останавливался не только по счетчику, но и по условию.
А Break или чего-то подобного нет. А значит не избежать что-то вроде:
Code: (clickermann) [Select]
$Stop=0
For($i=0,($i<ArrSize($Arr))&($Stop=0))
   If($Arr[$i]<$Arr[$i+1])
      $Stop=1
   End_If
End_Cyc
Вот уже и 6 строк (не считая отладочного LogWrite)
В конце-концов можно и без цикла сравнить 50-100 элементов какой-то тысячей-другой строк кода. Но зачем? )

А насчет нахождения минимального - я привел просто в качестве примера.
И имел ввиду нахождение минимального именно из двух значений.
Не обидно расписать приведенный тобою текст из 6 строк для массива, а вот 5 строк ради функционала min($a,$b) - это жестко.
Своя подпрограмма - это уже хорошо.
Но может разрешат делать их функциями и возвращать через имя функции результат?  :P

5
Золотой, столько букв и все в пустую.
В моем скрипте нет выхода за пределы массива если после получения ЛЖИ в первом аргументе операции И обработчик присваивает сразу итоговый результат ЛОЖЬ, не вычисляя второй аргумент.
В бесконечный цикл данная конструкция у меня по факту никогда не уходит.
Но она или работает верно (в одних частях кода) или выдает ошибку (в других) - от чего это зависит я понять не смог.

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

Насчет ошибки - может я и не прав. Но очень смущает громозкость и низкая читабельность получаемого текста скрипта: при отсутствии функции min ее функционал расписывается минимум 5-ю(!) строчками текста. Можно хотя бы было написать: $Min=If($a<$b,$a,$b)!
Можно написать свою подпрограмму min, но все равно будет 2 строчки (вызов и перенос результата из условного $_Return3 в нужную переменную).

Это все не жалобы. ClickerMann - средство очень хорошее.
Но хочется еще лучше )

7
Vint, извини, но ты погорячился.
У меня все правильно написано.
Подумай еще раз )

8
Не только я сталкиваюсь с этой проблемой?

Что-то типа:
Code: (clickermann) [Select]
For($i=0,($i<ArrSize($Arr)-1)&($Arr[$i]<$Arr[$i+1]))
End_Cyc
в некоторых местах приводит к ошибке. Хотя чаще не приводит к ней.
А расписывать эти 2 условия по отдельности - слишком громозко выходит ((

9
Ошибки / Re: WAITMS не делает паузу
« on: January 11, 2015, 03:48:40 PM »
Золотой, нет, просто вижу, что скрипт начал работать по другому (вернее начал не совсем корректно работать)
Потом нашел, что не делается пауза (а нужны просто иногда паузы в скрипте - время с начала перезагрузки вообще мне не нужно).

Кстати $_Ms возвращает корректные данные (они продолжают расти) - формально именно в этой переменной ничего не переполнилось.
А вот сама пауза WAIT/WAITMS - не работает - просто не делает паузы.

Элементарные:
Code: (clickermann) [Select]
$T=$_Ms
While($_Ms<$T+500)
End_Cyc
на ура заменяют стандартную паузу, но надо править весь текст макроса...

10
Ошибки / WAITMS не делает паузу
« on: January 11, 2015, 01:42:55 PM »
На домашнем серваке следующий скрипт:
Code: (clickermann) [Select]
$T=$_Ms
WAITMS(500)
Print($_Ms-$T)
выдает ноль (иногда единицу).

Нюанс следующий: сервак не перезагружался свыше 50 дней, а в миллисекундах это с момента запуска более чем 2^32 - видимо проблема в этом...

11
Общие вопросы / Re: Вопросы новичка
« on: November 27, 2014, 11:30:03 PM »
Универсальная - не универсальная, к разным - не разным, но фактически еще только начав писать бота уже трижды ищу разные наборы картинок.
А ведь еще эта функция впишет в пределы экрана (усечет) область поиска и округлит значения ее координат. Удобно.
Ей же можно задать максимальное время ожидания - и она вернет в $_Return3 или 0 (если так ничего и не появилось) или номер найденой картинки (а в $_Return1 и $_Return2 - ее координаты).

А вообще, возможно, подобную функцию стоило бы реализовать "системно" в кликере.
Мне то приходится использовать в цикле If_Picture_In(), каждый раз перебирая весь буфер (пока не попадется очередной образец), а можно было бы за один проход сразу искать все картинки - какая раньше встретится. Но это уже в идеи. )

12
Общие вопросы / Re: Вопросы новичка
« on: November 27, 2014, 09:57:16 PM »
Johnny, спасибо зо ответ. Очень приятно. )

Интересно, что заполнять массив и предполагалось из ini-файла.
Но процедуру надо бы вызывать несколько раз в секунду (ожидание появления одной из картинок, со списком имен их файлов как раз в массиве) и каждый раз грузить ini - не айс ((

Сорри, почитал про TFReadArr, померил скорость (1000 загрузок - менее 3 секунд) - не критично. Подходит.
Еще раз спасибо! )

13
Общие вопросы / Вопросы новичка
« on: November 27, 2014, 09:20:53 PM »
Решил создать подобную тему.
Похожей не нашел.

Первый вопрос:
а нельзя передать в процедуру в качестве параметра массив (точнее фактически ссылку на него)?
Т.е. указать при вызове имя массива, а в процедуре уже использовать его как массив.
Или можно как-то иначе?

Заранее благодарю.

14
Архив / Re: colormode не срабатывает
« on: November 19, 2014, 10:57:24 PM »
Если ты запускаешь в редакторе то вполне возможно.
Сам редактор делает снимки с частотой 200 мс. И вот как раз новый снимок попадает между colormode(8) и screenshot("test").
Запускай на основной форме проблем не будет.
т.е.моя проблема (ниже) возможна по этой же причине?

Проблема:  после выполнения MOVE (опускаю курсор на 70 пикселей ниже) и паузы в 1-2 секунды - в буфере обновляется область из этих 70 пикселов высотой (и примерно такой же шириной). Это видно по последующему скриншоту  - до мува или без него картинка старая, после мува и паузы часть скриншота соответствует новому состоянию экрана. ((

Pages: [1]