Заинтересовался темой автоматизации процесса торгов в онлайн платформах брокеров БО и форекс, знаю что пишут приводы и плагины специально для браузера. Но если брать UOpilot то каким способом можно будет реализовать автоматическое повышение ставок при проигрыше? При выигрышной ставке вылазиет желтенькое окошечко, при проигрышной серенькое.
Получается что
вот массив отвечающий за поиск цвета
set $a 0
while $a < 1
set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2) // ждёт какого-то цвета
end_while
и определяет точку
Но вопрос такой - серых точек в платформе много, как определить цвет именно области 2х2 см а не точки?
Далее если он серый то в определенном окне прописывается сумма, которая увеличена на коэффициент "N" от предыдущей каждый раз, когда появляется это серое окно. И сбрасываться к стартовой, когда появляется желтое!
Как будет в целом выглядеть данный скрипт?
Для примера:
Допустим в окне с координатами Х, У вылазит белое окошечко, и скрипт должен автоматически перейти в окошечко с координатами Q, W и задать там число 1*2,5 т.е. "2,5", Далее если появилось вновь белое окошечко то 2,5*2.5 т.е. "6,25". Но тут вылазит желтенькое окошечко, и нам необходимо вернуться к = "1". И так по кругу, как это сделать?
set #summa 1
while 1 = 1
// какие-то действия, если надо
set #a findcolor() // ищем появилось ли нужное окно, вписать нужные параметры
if #a > 0 // если окно нашлось
set #summa #summa * 2 // увеличиваем сумму на 2
else // иначе, т. е. окно не нашлось
set #summa 1 // сумма = 1
end_if
wait 1
// какие-то действия, если надо
end_while
set #summa 1
while 1 = 1
// какие-то действия, если надо
set #a findcolor() // ищем появилось ли нужное окно, вписать нужные параметры
if #a > 0 // если окно нашлось
set #summa #summa * 2 // увеличиваем сумму на 2
else // иначе, т. е. окно не нашлось
set #summa 1 // сумма = 1
end_if
wait 1
// какие-то действия, если надо
end_while
set #summa 1
while 1 = 1
// какие-то действия, если надо
set #a findcolor() // ищем появилось ли нужное окно, вписать нужные параметры
if #a > 0 // если окно нашлось
set #summa #summa * 2 // увеличиваем сумму на 2
else // иначе, т. е. окно не нашлось
set #summa 1 // сумма = 1
end_if
wait 1
// какие-то действия, если надо
kleft 100 200 // клик в строку куда прописывать значение, указать нужные координаты
wait 500
send #summa // напечатать сумму
// тут что делать дальше
end_while
set #summa 1
while 1 = 1
// какие-то действия, если надо
set #a findcolor() // ищем появилось ли нужное окно, вписать нужные параметры
if #a > 0 // если окно нашлось
set #summa #summa * 2 // увеличиваем сумму на 2
else // иначе, т. е. окно не нашлось
set #summa 1 // сумма = 1
end_if
wait 1
// какие-то действия, если надо
kleft 100 200 // клик в строку куда прописывать значение, указать нужные координаты
wait 500
send #summa // напечатать сумму
// тут что делать дальше
end_while
init_arr %num 2345 5678 10000 15999 // массив с числами
while 1 = 1
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
end_script // остановить скрипт
end_if
set #summa %num [#count] // присваиваиваем переменной значние из массива
log #count #summa
end_while
init_arr %num 2345 5678 10000 15999 // массив с числами
while 1 = 1
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
end_script // остановить скрипт
end_if
set #summa %num [#count] // присваиваиваем переменной значние из массива
log #count #summa
end_while
set #100
while 1 = 1 // это что означает?
// какие-то действия, если надо
set #2 findcolor(73, 74, 78, 260 1 1 #131416 %arr 2(что такое %arr 2 вот это я не понял, и куда его сувать?) // ищем появилось ли нужное окно, вписать нужные параметры
if #2 > 0 // если окно нашлось, ну допустим 2 пикселя, вроде у меня такого цвета там больше нет
kleft 1256 205 // клик в строку куда прописывать значение
wait 3000
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
send #200 // напечатать сумму
Double_left 1256 150 // двойной клик в сторону
else // иначе, т. е. окно не нашлось
set #100 // сумма = 100 /тут надо написать ничего не делаем, если оно не нашлось
end_if
wait 3000
трёмся *опой об диван) // какие-то действия, если надо
end_while
end_script
Вобщем не работает
set #блаблабла
while 1 = 1
// какие-то действия, если надо
set #2 findcolor(111, 397 350, 567 1 1 5130825) // ищем появилось ли нужное окно, вписать нужные параметры
if #2 > 0 // если окно нашлось
kleft 1256 205 // клик в строку куда прописывать значение, указать нужные координаты
wait 3000
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
send #200 // напечатать сумму
Double_left 1256 150 // тут что делать дальше, двойной клик в сторону
else // иначе, т. е. окно не нашлось
set #100 // сумма = 100 тут надо написать ничего не делаем, если оно не нашлось...
end_if
wait 1000
// какие-то действия, если надо
end_while
end_script
// не забываем сделать привязку Ctrl + A
set #a findcolor(111, 397 350, 567 1 1 5130825 %arr) // ищем
log #a // результат поиска, количество найденных пикселей
if #a > 0
log Цвет найден
else
log Цвет не найден
end_if
end_script
// Если хотите напечатать 200, то:
send 200
// Если содержимое переменной, то:
set #summa 500
send #summa // напечатает 500
// не забываем сделать привязку Ctrl + A
set #a findcolor(111, 397 350, 567 1 1 5130825 %arr) // ищем
log #a // результат поиска, количество найденных пикселей
if #a > 0
log Цвет найден
else
log Цвет не найден
end_if
end_script
init_arr %num 2345 5678 10000 15999 // массив с числами
while 1 = 1
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
end_script // остановить скрипт
end_if
set #summa %num [#count] // присваиваиваем переменной значние из массива
log #count #summa
end_while
set #summa 100
while 1 = 1
//привязк Ctrl + A
set #a findcolor(111, 397 350, 567 1 1 5130825 %arr) // ищем
if #a > 0
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 1000
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
send 200 // напечатать сумму
Double_left 1247 68 // тут что делать дальше, двойной клик в сторону
else
end_if
end_while
end_script
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 1000
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
send 200 // напечатать сумму
set #summa 100
init_arr %num 2345 5678 10000 15999 // массив с числами, куда его именно поставить?
while 1 = 1
//привязк Ctrl + A
set #a findcolor(111, 397 350, 567 1 1 5130825 %arr) // ищем серый 5130825
if #a > 0
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 1000
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
end_script // остановить скрипт
end_if // эта часть я так понимаю должна быть за поиском цвета
set #summa %num [#count] // присваиваиваем переменной значние из массива
Double_left 1247 68 // тут что делать дальше, двойной клик в сторону
log #count #summa
// Выдаёт ошибку с числами из массива.
wait 4000
else // если не находит серый
end_if
// и начинает поиск жёлтого
set #a findcolor(111, 397 350, 567 1 1 4709887 %arr) // желтый 4709887
if #a > 0 // находит желтый
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 1000
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
send 100 // напечатать сумму
Double_left 1247 68 // тут что делать дальше, двойной клик в сторону
wait 4000
end_if // не находит жёлтый - возвращается к началу скрипта
end_while
end_script
for #i 1 5 // цикл
send {Backspace} // нажать Backspace 5 раз
wait 100 // ждать 100 мсек
end_for
end_script
set #summa 100 // начальная ставка
init_arr %num 2345 5678 10000 15999
set #count 0
while 1 = 1
set #grey 0
set #yellow 0
while #grey = 0 and #yellow = 0 // ждём пока не появится серое или жёлтое окно
set #grey findcolor(111, 397 350, 567 1 1 5130825 %arr)
set #yellow findcolor(111, 397 350, 567 1 1 4709887 %arr)
wait 100
end_while
if #grey > 0 // если найдено серое окно
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 1000
for #i 1 5 // нажимаем Backspace 5 раз
send {Backspace}
wait 100
end_for
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
end_script // остановить скрипт, тут что делать если достигнута максимальная ставка
// сейчас остановка скрипта, чтобы не было ошибки при выходе за пределы массива
end_if
set #summa %num [#count] // присваиваиваем переменной значение из массива
log Текущая ставка #summa
send #summa // напечать сумму
Double_left 1247 68 // двойной клик в сторону
log #count #summa
wait 4000
else // иначе, т. е. найдено жёлтое окно
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 1000
for #i 1 5 // нажимаем Backspace 5 раз
send {Backspace}
wait 100
end_for
set #summa 100
set #count 0 // сбрасываем счётчик на 0, т. е. ставки начнутся заново
send #summa // напечатать сумму
end_if
end_while
set #summa 100 // начальная ставка
init_arr %num 2345 5678 10000 15999
set #count 0
while 1 = 1
set #grey 0
set #yellow 0
while #grey = 0 and #yellow = 0 // ждём пока не появится серое или жёлтое окно
set #grey findcolor(111, 397 350, 567 1 1 5130825 %arr)
set #yellow findcolor(111, 397 350, 567 1 1 4709887 %arr)
wait 100
end_while
if #grey > 0 // если найдено серое окно
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 1000
for #i 1 5 // нажимаем Backspace 5 раз
send {Backspace}
wait 100
end_for
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
end_script // остановить скрипт, тут что делать если достигнута максимальная ставка
// сейчас остановка скрипта, чтобы не было ошибки при выходе за пределы массива
end_if
set #summa %num [#count] // присваиваиваем переменной значение из массива
log Текущая ставка #summa
send #summa // напечать сумму
Double_left 1247 68 // двойной клик в сторону
log #count #summa
wait 4000
else // иначе, т. е. найдено жёлтое окно
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 1000
for #i 1 5 // нажимаем Backspace 5 раз
send {Backspace}
wait 100
end_for
set #summa 100
Double_left 1247 68
set #count 0 // сбрасываем счётчик на 0, т. е. ставки начнутся заново
send #summa // напечатать сумму
end_if
end_while
Эксперимента ради было бы неплохо после каждого нахождения окна и установлении ставки нажимать рандомно горячие клавиши Q или R
как вы мне посоветовали в данном скрипте
init_arr %a U T // список клавиш
set #rand random(size(%a)) + 1 // случайное число от 1 до количество_символов_в_массиве
send %a [#rand]
end_script
// копируем число в буфер, написать нужные действия
get clipboard $a // получили число в переменную
// копируем второе число в буфер, написать нужные действия
get clipboard $b // получили число в переменную
// дальше их сравниваем
// пример
set $a 100.5
set $b 101.67
set $a string_replace ($a "." ",") // заменяем точку на запятую, иначе не будет работать trunc
set $b string_replace ($b "." ",")
log trunc($a) trunc($b)
if trunc($a) < trunc($b) // теперь можно сравнить, если $a меньше $b
// какие-то действия
end_if
end_script
// копируем число в буфер, написать нужные действия
get clipboard $a // получили число в переменную
// копируем второе число в буфер, написать нужные действия
get clipboard $b // получили число в переменную
// дальше их сравниваем
// пример
set $a 100.5
set $b 101.67
set $a string_replace ($a "." ",") // заменяем точку на запятую, иначе не будет работать trunc
set $b string_replace ($b "." ",")
log trunc($a) trunc($b)
if trunc($a) < trunc($b) // теперь можно сравнить, если $a меньше $b
// какие-то действия
end
end_script
// пример
set $a 100.
set $b 101.
left_down 424, 384 abs
Move 548, 384 abs
left_up
ctrl+c // копируем число в буфер
get clipboard $a // получили число в переменную
left_down 621, 384 abs
Move 713, 384 abs
left_up
Ctrl+c // копируем второе число в буфер
get clipboard $b // получили число в переменную
// дальше их сравниваем СРАВНИВАЕМ ВСЁ ЧТО ДО ТОЧКИ. КАК ЭТО СДЕЛАТЬ?
set $a 100. //Откуда эти числа берутся?
set $b 101.
set $a string_replace ($a "." ",") // заменяем точку на запятую, иначе не будет работать trunc Допустим можно вобще после точки не сравнивать, тогда что-то нужно убрать?
set $b string_replace ($b "." ",")
log trunc($a) trunc($b)
if trunc($a) < trunc($b) // теперь можно сравнить, если $a меньше $b
kleft 37, 190 abs // закрыть архив
Breack // какие-то действия продолжить скрипт с начала полагаю, НО КАКОЙ ИЗ НИХ НАЧНЁТСЯ С НАЧАЛА? просто продолжить выполнение скрипта тогда Breack не писать?
end
end_script
20:41:12 15 (autosaved_15.txt, 2): left_up - (2): Ошибка! Проверьте правильность скрипта! EConvertError '' is not a valid integer value
left_up
20:41:44 15 (autosaved_15.txt, 3): ctrl+c - Неопознанная команда: ctrl+c
20:52:19 16 (autosaved_16.txt, 0): drag - (0): Ошибка! Проверьте правильность скрипта! EConvertError 'abs' is not a valid integer value
drag 424 384 abs 548 384 abs
20:53:01 16 (autosaved_16.txt, 0): drag - (0): Ошибка! Проверьте правильность скрипта! EConvertError 'abs' is not a valid integer value
drag 426, 385 abs 532, 384 abs
set $a 424 292 539 292 //координаты заданы строковой переменной
drag $a // так наполовину работает
Right 539 292 // нажимается ПКМ открывается окно
wait 1000
set clickoffsetx 5 // смещение для координаты X
set clickoffsety 5 // смещение для координаты Y
left 539 292 // клик в координаты 539 292 и ничего не происходит. Вместо копирования становится активной панель задач
End_script
Что мешает посмотреть описание команд, синтаксис и примеры?
http://uopilot.tati.pro/index.php?title=Список_функций
Выделить слово можно двойным кликом, Sendex ^c работает только для активного окна, т. е. рабочее окно должно быть на переднем плане.
// Сделать привязку Ctrl + A
showwindow windowhandle MINIMIZE // свернуть пилот
wait 500
double_left 100 200 // двойной клик по числу, указать координаты
wait 200
sendex ^c // нажать Ctrl + C
get clipboard $a // получить в переменную содержимое буфера
wait 100
double_left 200 20 // двойной клик по второму числу, указать координаты
wait 200
sendex ^c
get clipboard $b
log $a $b
set $a string_replace ($a "." ",") // заменяем точку на запятую, иначе не будет работать trunc
set $b string_replace ($b "." ",")
log $a $b
if trunc($a) < trunc($b) // сравниваем
// действия
end_if
end_script
set $a 424 292 539 292
drag $a
wait 300
double_left 440, 388 abs
wait 300
showwindow windowhandle MINIMIZE // свернуть пилот
wait 1000
Sendex ^c
get clipboard $a // получили число в переменную
double_left 633, 383 abs
wait 1000
Sendex ^c
get clipboard $b // получили число в переменную
// дальше их сравниваем СРАВНИВАЕМ ВСЁ ЧТО ДО ТОЧКИ? КАК ЭТО СДЕЛАТЬ?
set $a
set $b
set $a string_replace ($a "." ",") // заменяем точку на запятую, иначе не будет работать trunc
set $b string_replace ($b "." ",")
log trunc($a) trunc($b)
if trunc($a) < trunc($b) // теперь можно сравнить, если $a меньше $b
kleft 37, 190 abs // закрыть архив
// какие-то действия продолжить скрипт с начала полагаю, НО КАКОЙ ИЗ НИХ НАЧНЁТСЯ С НАЧАЛА? Просто продолжить выполнение скрипта.
end_if
end_script
if #grey > 0 // если найдено серое окно
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 500
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
wait 10
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
break // break - сначала, end_script остановить скрипт, тут что делать если достигнута максимальная ставка
// сейчас остановка скрипта, чтобы не было ошибки при выходе за пределы массива
end_if
set #summa %num [#count] // присваиваиваем переменной значение из массива
log Текущая ставка #summa
send #summa // напечать сумму
Double_left 1247 68 // двойной клик в сторону
wait random(2500) +3000
log #count #summa
Беда
Прописываю Еще одно if
if trunc($a) < trunc($b) // сравниваем 2 ВЫИГРЫШ
Kleft 37 188 abs
wait 100
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 500
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
wait 10
set #summa 100
set #count 100 // сбрасываем счётчик на 0, т. е. ставки начнутся заново
send #summa // напечатать сумму
Double_left 1247 68
wait random(2500) +3000 // действия
end_if
log $a $b
log trunc($a) trunc($b)
if trunc($a) < trunc($b)
// нужные действия
end_if
log $a $b
log trunc($a) trunc($b)
if trunc($a) < trunc($b)
// нужные действия
end_if
23:59:05 21 (Сравнение.txt, 92): -1 -1
23:59:05 21 (Сравнение.txt, 114):
23:59:05 21 (Сравнение.txt, 115): -1 -1
Во-первых, где код.
Во-вторых, переменные $a и $b содержат -1, а должны содержать скопированное число. Смысл дальше писать код, если предыдущая часть нормально не выполняется? Ищите почему не было копирования из буфера.
Скрипт можно писать отдельными частями, написали часть, проверили что она корректно работает, добавили в основной скрипт.
set #summa 100 // начальная ставка
init_arr %num 250 625 1526 3815 9700 24414 62500
set #count 0
while 1 = 1
set #grey 0
set #yellow 0
while #grey = 0 and #yellow = 0 // ждём пока не появится серое или жёлтое окно
set #grey findcolor(111, 397 350, 567 1 1 5130825 %arr)
set #yellow findcolor(111, 397 350, 567 1 1 4709887 %arr)
wait 100
end_while
if #grey > 0 // если найдено серое окно
kleft 1256 126 // клик в строку куда прописывать значение
wait 500
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
wait 10
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
break // break - сначала, end_script остановить скрипт, тут что делать если достигнута максимальная
ставка
// сейчас остановка скрипта, чтобы не было ошибки при выходе за пределы массива
end_if
set #summa %num [#count] // присваиваиваем переменной значение из массива
log Текущая ставка #summa
send #summa // напечать сумму
Double_left 1247 68 // двойной клик в сторону
wait random(2500) +3000
send R
log #count #summa
wait 200
else // иначе, т. е. найдено жёлтое окно
Kleft 37 188 abs
wait 500
kleft 261 178 abs
wait 500
double_left 440, 388 abs
wait 300
showwindow windowhandle MINIMIZE // свернули пилот
wait 1000
Sendex ^c
get clipboard $a // получили число а в переменную
double_left 633, 383 abs
wait 1000
Sendex ^c
get clipboard $b // получили число в переменную, Число не получается, хотя при ручной вставке обнаруживается что оно скопировано в буфер
// дальше их сравниваем СРАВНИВАЕМ ВСЁ ЧТО ДО ТОЧКИ
set $a
set $b
set $a string_replace ($a "." ",") // заменяем точку на запятую, иначе не будет работать trunc
set $b string_replace ($b "." ",")
log $a $b
log trunc($a) trunc($b)
if trunc($a) > trunc($b) // сравниваем 1 ПРОИГРЫШ
wait 100
Kleft 35 101
wait 100
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 500
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
wait 10
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
break // break - сначала, end_script остановить скрипт, тут что делать если достигнута максимальная
// действия
set #summa %num [#count] // присваиваиваем переменной значение из массива
log Текущая ставка #summa
send #summa // напечать сумму
Double_left 1247 68 // двойной клик в сторону
wait random(2500) +3000
send R
log #count #summa
wait 200
end_if
end_if
set $a
set $b
set $a string_replace ($a "." ",") // заменяем точку на запятую
set $b string_replace ($b "." ",")
log $a $b
log trunc($a) trunc($b)
if trunc($a) < trunc($b) // сравниваем 2 ВЫИГРЫШ
Kleft 35 101
wait 100
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 500
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
wait 10
set #summa 100
set #count 100 // сбрасываем счётчик на 0, т. е. ставки начнутся заново
send #summa // напечатать сумму
Double_left 1247 68
wait random(2500) +3000 // действия
end_if
set $a
set $b
set $a string_replace ($a "." ",") // заменяем точку на запятую
set $b string_replace ($b "." ",")
log $a $b
log trunc($a) trunc($b)
if trunc($a) = trunc($b) // сравниваем 3 РАВЕНСТВО
Kleft 35 101
wait 100
Send Q // какое-то действие
wait 100
end_if
end_script
end_if
end_while
Использовать while вместо if.
if условие
// выполнится однократно, если условие является истиной
end_if
while условие
// будет выполняться пока условие является истиной
end_while
log clear
set #a 3
if #a < 7 // если переменная #a меньше 7
log #a // вывести в лог
end_if
log
while #a < 7 // пока переменная #a меньше 7
log #a // вывести в лог
set #a #a + 1 // увеличиваем переменную #a на 1
end_while
end_script
Так у меня затруднение какое-то получилось.
мне нужно выйти за пределы цикла и написать возврат к нему ниже. Не буду же я копировать одно и тоже по 100 раз. Вот почему и говорю что возврат к строке или переменной с Уникальным номером было бы естественным выходом из порочных дъявольских кругов цикличности. Тот кто изобрёл программирование был... мазохист.
wile 1=1 (#A)
бла бла
if = 1
Тут надо писать end_if ? Или как мне вывести за пределы этого цикла условие если if не равно 1
end_while (то есть начать цикл заново)
else (это же относится к началу if, будет ли оно в таком случае работать)-- в противном случае
те же действия что в общем цикле
но по ходу их выполнения может возникнуть необходимость несколько раз вернуться к циклу #А
Графически объясню что я хочу потому что на словах не очень
https://ibb.co/m11hmR
Вот во вторых квадратиках у меня может содержаться то, что уже сделано в первых, и как мне сослаться на решение в первых чтобы не писать его по 100 раз в тех что будут после него?
В природе всё гораздо проще - решает сила а не переменные)
while 1 = 1
gosub metka // перейти к метке (имя может быть любое)
end_while
end_script
:metka
// тут могут быть любые проверки/действия или другой цикл
if 1 = 1
// бла бла
else
// бла бла
end_if
return // возвращаемся к месту перенаправления, т. е. обратно в цикл
while 1 = 1
gosub metka
return // возвращаемся к месту перенаправления, т. е. обратно в цикл
while 1 = 1 // (цикл 1)
while 2 = 2 // (цикл 2)
if var > 0 // если переменная var больше 0 переход к метке
gosub metka // переход в подпрограмму
// после возвращения из подпрограммы оба цикла продолжат работу
else
break // если var меньше или равно 0, выйти из цикла 2
// если надо выйти и из цикла 1, то break 2 (где 2 - это уровень вложенности циклов)
end_if
end_while
end_while
gosub metka // без двоеточия
Не надоело ещё придумывать свой синтаксис для команд?
http://uopilot.tati.pro/index.php?title=Showwindow
set #handle findwindow ("Яндекс.Браузер") // найти окно яндекса
showwindow #handle // показать окно
end_script
set #handle findwindow ("Яндекс.Браузер") // найти окно яндекса
set workwindow #handle //сделать его рабочим окном
showwindow // показать рабочее окно
end_script
set #handle findwindow ("Яндекс.Браузер") // найти окно яндекса
showwindow #handle // показать окно
end_script
set #handle findwindow ("Яндекс.Браузер") // найти окно яндекса
set workwindow #handle //сделать его рабочим окном
showwindow // показать рабочее окно
end_script
http://uopilot.tati.pro/index.php?title=Поиск_пути_к_дочернему_окну
Координаты сбиваются потому что через Ctrl + A привязываетесь к дочернему окну, а findwindow находит родительское. Надо найти путь от родительского к дочернему и дочернее делать рабочим.
set #ownerHandle findwindow (Небеса: уникальная игра! - Игра – Yandex)
set #tmp getwindow (#ownerHandle child)
set #childHandle getwindow (#tmp )
set workwindow #childHandle
Есть еще один вопрос. Как заставить рандомно нажимающуюся клавишу нажиматься еще раз точно также как первый рандом? Т.е. как-то через лог вывести сравнение?
Т.е. допустим есть
repeat 2
init_arr %a А В // клавиши
set #rand random(size(%a)) + 1 // случайное число от 1 до количество_символов_в_массиве
send %a [#rand]
log A, B .... //как прописать в логе чтобы оттуда взяло нажатую клавишу и повторило её нажатие еще X раз? Может ниже? На чем именно определяется рандом? Важно чтобы было без задержки.
Нужно чтобы если нажалось A, то она же нажалась 2 раза, если B то 2 раза.
End_Repeat
init_arr %a А В // клавиши
set #rand random(size(%a)) + 1 // случайное число от 1 до количество_символов_в_массиве
send %a [#rand] // нажать клавишу
send %a [#rand] // нажать ещё раз
init_arr %a А В // клавиши
set #rand random(size(%a)) + 1 // случайное число от 1 до количество_символов_в_массиве
send %a [#rand] // нажать клавишу
send %a [#rand] // нажать ещё раз
if %a [#rand] = 1
send А
else // т.е. если оно равно 2
send В
end_if
log clear
init_arr %a А В // клавиши
set #rand random(size(%a)) + 1 // случайное число от 1 до количество_символов_в_массиве
log %a [#rand] // клавиша
log %a [#rand] // та же самая клавиша
end_script
log clear
init_arr %a А В // клавиши
set #rand random(size(%a)) + 1 // случайное число от 1 до количество_символов_в_массиве
log %a [#rand] // клавиша
log %a [#rand] // та же самая клавиша
end_script
kleft 194 249
wait 200
kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты
wait 100
send backspace // нажать баксп 5 раз
send backspace
send backspace
send backspace
send backspace
wait 100
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
break// break - сначала, end_script остановить скрипт, тут что делать если достигнута максимальная
// сейчас остановка скрипта, чтобы не было ошибки при выходе за пределы массива
end_if
set #summa 1 // начальное число
init_arr %num 2 4 8 16
set #count 0
(где num это количество нажатий на кнопку, из тех рандомов что обсуждалось выше)
Как это всё не запутать?
if A>0
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
break//тут что делать если достигнут мах нажатий
// сейчас остановка скрипта, чтобы не было ошибки...
end_if
set #summa %num [#count] // присваиваиваем переменной значение из массива
log Текущее количество нажатий #summa
send #summa // напечать ...
log #count
log Делаем ставку
log Выход из цикла
init_arr %num 2 4 8 16 // количество нажатий
set #count 0
init_arr %a А В // клавиши
log clear
log mode compact
log open 0 0 200 600
while #count < size(%num)
set #count #count + 1
set #rand random(size(%a)) + 1
for #i 1 %num [#count]
log %a [#rand] // клавиша, вместо log нужен будет send
end_for
log
end_while
end_script
init_arr %num 2 4 8 16 // количество нажатий
set #count 0
init_arr %a А В // клавиши
log clear
log mode compact
log open 0 0 200 600
while #count < size(%num)
set #count #count + 1
set #rand random(size(%a)) + 1
for #i 1 %num [#count]
log %a [#rand] // клавиша, вместо log нужен будет send
end_for
log
end_while
end_script
--
log open 0 0 500 300 // открыть лог в координатах 0 0, размером 500 300
showwindow loghandle minimize // свернуть окно лога
end_script
[quote name='cirus' date='2.11.2017, 2:01' post='421377']
У меня что-то случилось с пилотом, такое ощущение что действия из других скриптов вмешиваются в работу текущего скрипта, т.е. делают то что не написано? Он своей жизнью зажил?
Или я нажал что-то не то?
Можно ли убрать из сравнения первые 4 строки, если они уже фигурируют в данном скрипте но над If который выше этого? Будет ли работать. Числа в переменную уже же получены? Или не будет работать?
set $a string_replace ($a "." ",") // заменяем точку на запятую, иначе не будет работать
set $b string_replace ($b "." ",")
log $a $b
log trunc($a) trunc($b)
if trunc($a) < trunc($b)
IIII
end_if
set $a string_replace ($a "." ",") // заменяем точку на запятую, иначе не будет работать
set $b string_replace ($b "." ",")
log $a $b
log trunc($a) trunc($b)
if trunc($a) < trunc($b)
IIII
end_if
if trunc($a) > trunc($b)
IIe
end_if
if trunc($a) = trunc($b)
IIUU
end_if
Еще одна проблема, сейчас в циклах If стоит какой-то беспорядок
перескакивает с одного на другой, хотя я вроде ничего не менял
Есть
while 1=1
while Grey/Yelow
1111
end_while
if #grey > 0
12345
else //////////////////////////////// что тут не так?
if trunc($a) < trunc($b)
IIII
end_if
тут перескакивает на следующий if
if trunc($a) > trunc($b)
IIe
end_if
тут перескакивает на следующий if
if trunc($a) = trunc($b)
IIUU
end_if
end_if
end_while
while 1=1
while Grey/Yelow
1111
end_while
if #grey > 0
12345
else
if trunc($a) < trunc($b) // если $a < $b
IIII
else // иначе
if trunc($a) > trunc($b) // если $a > $b
IIe
else // иначе $a = $b
IIUU
end_if
end_if
end_if
end_while
while 1=1
while Grey/Yelow
1111
end_while
if #grey > 0
12345
else
if trunc($a) < trunc($b) // если $a < $b
IIII
else // иначе
if trunc($a) > trunc($b) // если $a > $b
IIe
else // иначе $a = $b
IIUU
end_if
end_if
end_if
end_while
Скрипт --> форматировать.
Расставятся отступы и будет понятнее что к чему.
if главное // условие1
// условие1 является истиной, выполняется эта часть, всё что от else до end_if (окончание условия1) пропускается
else
// условие ложь, выполняется всё что идёт до end_if (окончание условия1)
if // условие2
End_if // окончание условия2
If // условие3
End_if // окончание условия3
If // условие4
End_if // окончание условия4
End_if // окончание условия1
set #grey findcolor(0 0 1920 1080 1 1 4737096 %arr workwindow) // для теста координаты указываем больше
hint #grey
end_script
set #grey findcolor(0 0 1920 1080 1 1 4737096 %arr workwindow) // для теста координаты указываем больше
hint #grey
end_script
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
log наступил break
break // break - сначала,
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
log наступил break
break // break - сначала,
log #count > size(%num)
if #count > size(%num)
log #count > size(%num)
if #count > size(%num)
18:11:47 21 (Модиф 21.txt, 32): 1501 > 4
Что написано, то и сравнивается.
set %arr [1] 12
set %arr [2] 6
set %arr [3] 123
set %arr [4] 77
set #count 3
log %arr [#count] // вывести в лог значение 3 элемента массива
end_script
set %arr [1] 12
set %arr [2] 6
set %arr [3] 123
set %arr [4] 77
set #count 3
log %arr [#count] // вывести в лог значение 3 элемента массива
end_script
set #count #count + 1 // переменная-счётчик
if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
log достигнута максимальная ставка // end_script остановить скрипт, тут что делать если достигнута максимальная
// сейчас остановка скрипта, чтобы не было ошибки при выходе за пределы массива
end_if
set #summa %num [#count] // присваиваиваем переменной значение из массива
log Текущая ставка #summa
send #summa // напечать сумму
if #grey > 0 // если найдено серое окно
if #count = #x
end_script
если поставлю else
то куда девать end_if ?
if #yellow >0
if #count = #x
end_script
снова куда девать?
else
и
end_if
if #grey > 0 // если найдено серое окно || (1) if ||
if #count = #x // где х это максимальная
end_script
else
continue
end_if[
wait 300
kleft 1256 126 .........
// Пример 1
log clear
if 1 = 1
log +++ // показать в логе если условие истина
end_if
end_script
// Пример 2, проверены будут оба условия
log clear
if 1 = 1
log +++ // показать в логе если условие истина
end_if
if 2 = 2
log !!! // показать в логе если условие истина
end_if
end_script
// Пример 3, проверено будет первое условие, второе только если первое истина
// если первое ложь, то второе не будет проверено
log clear
if 1 = 1
log +++ // показать в логе если условие истина
if 2 = 2
log !!! // показать в логе если условие истина
end_if
end_if
end_script
// Пример 4
log clear
if 1 = 1
log +++ // показать в логе если условие истина
else
log !!! // если истина ложь
end_if
end_script
// Пример 5, проверено будет первое условие, второе только если первое ложь
log clear
if 1 = 1
log +++ // показать в логе если условие истина
else
if 2 = 2
log !!! // показать в логе если условие истина
end_if
end_if
end_script
// Пример 1
log clear
if 1 = 1
log +++ // показать в логе если условие истина
end_if
end_script
// Пример 2, проверены будут оба условия
log clear
if 1 = 1
log +++ // показать в логе если условие истина
end_if
if 2 = 2
log !!! // показать в логе если условие истина
end_if
end_script
// Пример 3, проверено будет первое условие, второе только если первое истина
// если первое ложь, то второе не будет проверено
log clear
if 1 = 1
log +++ // показать в логе если условие истина
if 2 = 2
log !!! // показать в логе если условие истина
end_if
end_if
end_script
// Пример 4
log clear
if 1 = 1
log +++ // показать в логе если условие истина
else
log !!! // если истина ложь
end_if
end_script
// Пример 5, проверено будет первое условие, второе только если первое ложь
log clear
if 1 = 1
log +++ // показать в логе если условие истина
else
if 2 = 2
log !!! // показать в логе если условие истина
end_if
end_if
end_script
if #count = #x
log #count = #x
end_script
else
log #count не равен #x
continue
end_if
set #count #count + 1 // переменная-счётчик
// if #count > size(%num) // если переменная-счётчик больше, чем размер массива num
// break // break - сначала, end_script остановить скрипт, тут что делать если достигнута максимальная ставка
// сейчас остановка скрипта, чтобы не было ошибки при выходе за пределы массива
//end_if
set #summa %num [#count] // присваиваиваем переменной значение из массива
log Текущая ставка #summa
send #summa // напечать сумму
continue относится к циклу for, но не while.
while 1=1
set #window Alert = 0
while 2=2
findwindow (Alert)
end_while
if Alert > 0
log Alert найден
//Ищем дочернее окно
// set #ownerHandle findwindow (Алерт)
//set #tmp getwindow (#ownerHandle child) --
//set #tmp getwindow (#tmp next)
//set #tmp getwindow (#tmp next)
//set #childHandle getwindow (#tmp next)
//set workwindow #childHandle //сделать рабочим окном
// надо ли тут привязку делать?
// как скопировать строку AUDUSD M15 Demand Zone Entered at 0.76581? Или можно как-то найти это слово без копирования?
//Далее когда мы его находим, нужно получить что-то вроде
Sendex ^c
get clipboard $var
find word Demand
close "Alert"
//Пошли действия в браузере
if $var > 0
log Demand найден
send F // действия в браузере
else
log Demand не найден
send G // Действия в браузере
End_if
End_while
Вроде бы всё
Для начала проверить находится ли изображение в перекрытом окне. Кнопка F в окне пилота, там должно отображаться окно программы Алерт во время работы findimage. Вырезаете нужный текст и ищете.
set #handle findwindow("Алерт") // ищем окно Алерт"
while #handle = 0 // пока не найдено
set #handle findwindow("Алерт") // ищем окно Алерт"
wait 100
end_while
set #a findimage(0 0 500 500 (C:\Demand.bmp) %arr #handle) // искать картинку в окне Алерт
log #a
end_script
set #handle findwindow("Алерт") // ищем окно Алерт"
while #handle = 0 // пока не найдено
set #handle findwindow("Алерт") // ищем окно Алерт"
wait 100
end_while
set #a findimage(0 0 500 500 (C:\Demand.bmp) %arr #handle) // искать картинку в окне Алерт
log #a
end_script
terminate Алерт // закрыть все окна с именем Алерт
end_script
terminate Алерт // закрыть все окна с именем Алерт
end_script
terminate Алерт // закрыть все окна с именем Алерт
end_script
Что-то вроде этого.
set #count 0 // флаг что картинка не найдена
while 1 = 1
// какие-то действия
gosub find_image // подпрограмма поиска
// какие-то действия
end_while
// подпрограмму можно в конец скрипта
:find_image
if #count = 0 // если картинка не найдена
set #a findimage(...) // ищем картинку
if #a > 0 // если найдена
set #count 1 // флаг что картинка найдена
set #time timer + 180000 // записываем в переменную текущее время + 3 минуты (60000 = 1мин)
wait 3000 // ждать 3 секунды, указать нужное время
end_if
else // иначе, т. е. картинка найдена, count = 1
if #time > timer // если не прошло 3 минуты с момента нахождения картинки
set #a findimage(...) // ищем картинку
if #a > 0 // если найдена
// тут что делать когда картинка найдена
end_if
else // иначе, т. е. вышло время (3 минуты)
set #count 0 // ставим флаг что картинка не найдена
// все действия начнутся с начала
end_if
end_if
// возвращаеися в тело скрипта
return
set #count 0 // флаг что картинка не найдена
while 1 = 1
// какие-то действия
gosub find_image // подпрограмма поиска
// какие-то действия
end_while
// подпрограмму можно в конец скрипта
:find_image
if #count = 0 // если картинка не найдена
set #a findimage(...) // ищем картинку
if #a > 0 // если найдена
set #count 1 // флаг что картинка найдена
set #time timer + 180000 // записываем в переменную текущее время + 3 минуты (60000 = 1мин)
wait 3000 // ждать 3 секунды, указать нужное время
end_if
else // иначе, т. е. картинка найдена, count = 1
if #time > timer // если не прошло 3 минуты с момента нахождения картинки
set #a findimage(...) // ищем картинку
if #a > 0 // если найдена
// тут что делать когда картинка найдена
end_if
else // иначе, т. е. вышло время (3 минуты)
set #count 0 // ставим флаг что картинка не найдена
// все действия начнутся с начала
end_if
end_if
// возвращаеися в тело скрипта
return
else // иначе, т. е. картинка найдена, count = 1
if #time > timer // если не прошло 3 минуты с момента нахождения картинки
set #a findimage(...) // ищем картинку
if #a > 0 // если найдена
// тут что делать когда картинка найдена
end_if
set #петя с #ножом
set #петя с #деньгами
set #вася с #ножом
set #вася с #деньги
if #петя с ножом
gosub петя с ножом
else
if vasa s nojom
gosub vasla s nojom // Или же можно прямо здесь каким-то образом написать вот этот блок с таймером???
else
if peja s dengi
gosub petja s dengi
else
if vasja s dengi
gosub vasja s dengi
end_if
end_if
end_if
end_if
:Петя с ножом
if #count = 0 // если картинка не найдена
set #a findimage(Петя с ножом) // ищем картинку
if #a > 0 // если найдена
set #count 1 // флаг что картинка найдена
set #time timer + 180000 // записываем в переменную текущее время + 3 минуты (60000 = 1мин)
wait 3000 // ждать 3 секунды, указать нужное время
end_if
else // иначе, т. е. картинка найдена, count = 1
if #time > timer // если не прошло 3 минуты с момента нахождения картинки
set #a findimage(Петя с ножом) // ищем картинку
if #a > 0 // если найдена
// тут что делать когда картинка найдена
end_if
else // иначе, т. е. вышло время (3 минуты)
set #count 0 // ставим флаг что картинка не найдена
// все действия начнутся с начала
end_if
end_if
// возвращаемся в тело скрипта
return
:vasa s nojom
if #count = 0 // если картинка не найдена
set #a findimage(vasa s nojom) // ищем картинку
if #a > 0 // если найдена
set #count 1 // флаг что картинка найдена
set #time timer + 180000 // записываем в переменную текущее время + 3 минуты (60000 = 1мин)
wait 3000 // ждать 3 секунды, указать нужное время
end_if
else // иначе, т. е. картинка найдена, count = 1
if #time > timer // если не прошло 3 минуты с момента нахождения картинки
set #a findimage(vasa s nojom) // ищем картинку
if #a > 0 // если найдена
// тут что делать когда картинка найдена
end_if
else // иначе, т. е. вышло время (3 минуты)
set #count 0 // ставим флаг что картинка не найдена
// все действия начнутся с начала
end_if
end_if
// возвращаемся в тело скрипта
return
: peja s dengi
if #count = 0 // если картинка не найдена
set #a findimage( peja s dengi) // ищем картинку
if #a > 0 // если найдена
set #count 1 // флаг что картинка найдена
set #time timer + 180000 // записываем в переменную текущее время + 3 минуты (60000 = 1мин)
wait 3000 // ждать 3 секунды, указать нужное время
end_if
else // иначе, т. е. картинка найдена, count = 1
if #time > timer // если не прошло 3 минуты с момента нахождения картинки
set #a findimage( peja s dengi) // ищем картинку
if #a > 0 // если найдена
// тут что делать когда картинка найдена
end_if
else // иначе, т. е. вышло время (3 минуты)
set #count 0 // ставим флаг что картинка не найдена
// все действия начнутся с начала
end_if
end_if
// возвращаемся в тело скрипта
return
: vasja s dengi
if #count = 0 // если картинка не найдена
set #a findimage(vasja s dengi) // ищем картинку
if #a > 0 // если найдена
set #count 1 // флаг что картинка найдена
set #time timer + 180000 // записываем в переменную текущее время + 3 минуты (60000 = 1мин)
wait 3000 // ждать 3 секунды, указать нужное время
end_if
else // иначе, т. е. картинка найдена, count = 1
if #time > timer // если не прошло 3 минуты с момента нахождения картинки
set #a findimage(vasja s dengi) // ищем картинку
if #a > 0 // если найдена
// тут что делать когда картинка найдена
end_if
else // иначе, т. е. вышло время (3 минуты)
set #count 0 // ставим флаг что картинка не найдена
// все действия начнутся с начала
end_if
end_if
// возвращаемся в тело скрипта
return
???
if #петя с ножом
gosub петя с ножом
else
set #time timer + 180000 // записываем в переменную текущее время + 3 минуты (60000 = 1мин)
wait 3000 // ждать 3 секунды, указать нужное время
Вот сейчас такая проблема.
пишу из маленького уголка своего монитора - не занятого пилотом.
Потому что он при проверке форматирования завис(окно стало серым) и где то выдал окно
которое указало там на какую-то ошибку
но не в диспетчере
ни где-то еще это окно не показывает, только писщит что оно есть
и перейти я к нему не могу(ни сдвинуть не свернуть окно) потому что в настройках пилота указано поверх всех окон
написал большой код
и если я просто закрою его в процессах он весь потеряется
Что делать? И как в последующем выводить это окно
"всплывающее табло пилота"(не лог)
на первый план ли вообще идентифицировать?
--------------------------------------
P.S| В этот раз спасся утилитой TurboTop позволяющей лишать топа и выводить окна на передний план
Но в дальнейшем с этим маленьким оконцем нужно что-то делать
https://imgbb.com/
set #time1 0 // таймер 1
set #count1 0 // счётчик 1
while 1 = 1
set #a findimage(299, 395 394, 488 (C:\Users\abc\Desktop\1.bmp) %arr)
if #a > 0 // если нашли картинку
if #count1 = 0 // если счётчик 0
set #count1 1 // счётчик равен 1
set #time1 timer + 180000 // установили таймер
else
hint #a #count1
if #time1 > timer // если не вышло время
set #count1 #count1 + 1 // увеличиваем счётчик
log #count1
wait 100
end_if
end_if
end_if
end_while
set #time1 0 // таймер 1
set #count1 0 // счётчик 1
while 1 = 1
set #a findimage(299, 395 394, 488 (C:\Users\abc\Desktop\1.bmp) %arr)
if #a > 0 // если нашли картинку
if #count1 = 0 // если счётчик 0
set #count1 1 // счётчик равен 1
set #time1 timer + 180000 // установили таймер
else
hint #a #count1 // тут я понимаю надо написать hint - Вторичное нахождение?
if #time1 > timer // если не вышло время
set #count1 #count1 + 1 // увеличиваем счётчик
log #count1
wait 100
end_if
end_if
end_if
end_while
while time 15s
//так написать чтобы он гонял 15 секунд этот цикл?
findimage (картинка)
if картинка найдена
goto на подпрограмму выполнения действий
end_if
если не найдена, он по истечении этих 15 с идет дальше
end_while
Есть 2 картинки - Левая и правая.
set #L findimage (0 0 500 500 C;/L.Bmp #Alert)
set #R findimage (0 0 500 500 C;/R.Bmp #Alert)
if #L > 0
--Записываем L как мего L т.е. ML
наверно будет так - set L=#ML
это надо будет сделать пока не найдена 3-я картинка L
и где-то тут включаем таймер
set #time1 timer + 180000 // Можно объяснить тупому Барану где именно ведется отсчёт этого эфемерного таймера???? Я не могу визуально не наблюдая его понять когда он есть, а когда его нет.
Ждём
В это время приходит картинка R(но мы её ##ёбываем, потому что сидим здесь и ждём когда же у нас закончится таймер, или не сидим?) Где мы находимся?
Ок. Закончился таймер.
Пошел вторичный цикл поиска картинки L
я так думаю будет сделано.
while time 15s
set #L findimage (0 0 500 500 C;/L.Bmp #Alert) -- А как присвоить ей тут суперстатус #ML? чтобы она покруче была\ во избежании спутывания пилотом с другой картинкой L???
???
if #L > 0
goto Расправа с левой картинкой
else
log Картинка не найдена // только наверно лог будет забит этой строкой, потому что будет гонять её без перерыва на обед, пока не закончится???
end_if
end_while
else // т.е. не найдена L а найдена R - В ПЕРВЫЙ РАЗ!!!!
if R > 0 (Не говоря уже о том что мы @@ёбываем картинку R если она приходит во время ожидания вторичного появления картинки L, но это ладно, это проблема вторична)
log R найдена 1 раз
где-то тут таймер
Ну тут я понял что что-то не то делаю, но увы не пойму что...
goto Расправа с R картинкой
:Расправа с левой картинкой
и тут то уж я с ней расправлюсь!!!
:Расправа с R
Тут я со всеми расправляюсь и выхожу победителем!
log clear
log mode compact
set #count1 0 // счётчик, обозначает найдена картинка первый раз или нет
while 1 = 1
if #count1 = 0
log #count1, картинка найдена первый раз
log Счётчик равен 0, выполняется эта часть блока
log ++++++
set #count1 1 // счётчик равен 1, теперь эта часть блока не будет выполняться
else
log #count1, картинка найдена НЕ первый раз
log Счётчик не равен 0, выполняется эта часть блока
log !!!!!!!!!!!!!!
end_if
log
wait 2000
end_while
// пример
log clear
log mode compact
set #time 0
while 1 = 1
hint (20 clRed 500 500 -1 -1 (#time timer)) // выводим переменную #time и timer
if #time < timer
log ++++++ // каждые 2 секунды будет сообщение в логе
set #time timer + 2000 // увеличиваем таймер на 2 секунды
end_if
end_while
// пример
log clear
log mode compact
set #time 0
while 1 = 1
hint (20 clRed 500 500 -1 -1 (#time timer)) // выводим переменную #time и timer
if #time < timer
log ++++++ // каждые 2 секунды будет сообщение в логе
set #time timer + 2000 // увеличиваем таймер на 2 секунды
end_if
end_while
Только вызывать хинт в нужных местах скрипта.
set #time timer + 10000 // это увеличение переменной #time
log clear
log mode compact
set #time timer + 3000
while 1 = 1
if #time > timer
hint (20, clBlue 500 500 -1 -1 (Ждём 3 секунды))
else
hint (20, clRed 500 500 -1 -1 (3 секунды прошло))
// какие-то действия если прошло 3 секунды
log АААА
wait 300
end_if
log Какие-то действия
wait 300
end_while
end_script
set #time timer + 10000 // это увеличение переменной #time
set timer // обнулить таймер
set #time 0 // переменная равна 0
set timer // обнулить таймер
set #time 0 // переменная равна 0
Не пропускает имя счетчика.
Не пойму почему
---------------
Скрипт просто прыгает несколько раз по этим строкам и уходит на другую метку.
UCM1S Identified
23:09:56 51 ( 40): execution UCM1S
23:09:56 51 (41): 0
23:09:57 51 (40): execution UCM1S
23:09:57 51 (41): 0
23:09:58 51 ( 89): execution UCM1B
Хотя на нее ничего не указывает...
set #CUCM1S 0
set #CUCM1B 0
if #UCM1S > 0
log -- UCM1S -- Identified
gosub UCM1S
else
if #UCM1B > 0
log -- UCM1B -- Identified
gosub UCM1B
end_if
:UCM1S // выполнение переходит сюда
(40) log execution UCM1S
(41) log #CUCM1S
(42) if #CUCM1S = 0 // если картинка не найдена
И всё а дальше не идёт?
.
.
.
.
.
.
(88):UCM1B // выполнение переходит сюда, если найдена картинка
(89) log execution UCM1B //сразу прыгает сюда?
(90) if #CUCM1B = 0 // если картинка найдена
set #UCM1B findimage
Не надо располагать подпрограммы в самом скрипте. В конец вынесите.
Посмотрите примеры: http://uopilot.tati.pro/index.php?title=Gosub
erfsdfsdf
Залогинился со старого компа.
Странно старое имя не подходит
// пример
set #time1 timer + 3000 // 3 секунды для васи
set #vasya 1
set #time2 timer + 5000 // 5 секунд для пети
set #petya 1
set %n [1] "\n" // перенос строки для hint
while 1 = 1
hint (20, clBlue 500 500 -1 -1 (#time1 timer Вася = #vasya%n [1]#time2 timer Петя = #petya))
if #time1 < timer // если вышло время для васи
set #vasya 0 // присваиваем 0
end_if
if #time2 < timer // если вышло время для пети
set #petya 0 // присваиваем 0
end_if
wait 100
end_while
Как сделать в теле скрипта поиск и замену символов наподобие блокнота/ворда?
Не могу понять, голимый клиент мёртв:
https://imgbb.com/
Ни перепривязку не могу сделать ни поиск дочернего окна, вобще никакие действия не делает...
Тут Хр на старом компе, какие могут быть проблемы после перехода?
Может окно не найдено. На какой строке ошибка?
[quote name='Levo222' post='422150' date='19.11.2017, 2:42']
ну да, что-то с окном
Так всё вроде быработает
set #handle findwindow("Алерт") // ищем окно Алерт"
log #handle
end_script
set #handle findwindow("Алерт") // ищем окно Алерт"
log #handle
end_script
А пишите что окно не находит. Это хендл окна. Если не находит, то было бы 0.
Нужно состряпать скрипт до понедельника. И обкатывать его уже на рабочем терминале
Вот еще раз скажите мне.
Я должен все "set"ы = 0 кроме счетчиков
В начало скрипта запихать, и больше с ними не морочиться? Или есть особенность куда его можно засовывать только в частное исполнение? Ну в if там и прочее... понятно что таймер и прочее будут конкретно стоять
Просто по опыту изучения скриптов тех же индикаторов MQL, там все вводные данные стоят в начале. А ссылки на блоки к ним идут из рабочей части, и там вобще практически не указываются
Из того что я в схемах напридумывал -
Именно вот этот #count 0 куда лучше засунуть, чтобы он не путался под ногами и к месту всё обнулял? потому что их будет много. так нужно сразу определить в каком месте будет происходить "обнуление"?
Исходя из того, что есть блок поиска, определения и выполнения.
У меня есть определенные аббревиатуры: по каталогу их удобнее всего будет присваивать блоку поиска убрав букву С(count), а по определению в строку исполнения исходя из категории буквы S или B они же соответствуют заданному изображению
set #СUCM1B
set #СUCM1S
set #CNUM1S
и так далее.
т.е. это #Вася1
#Вася2
#Петя1
#Петя2
ну и т.д.
Лучше объявить переменные вначале. Потом меняйте значения как надо.
set #СUCM1B 0
set #СUCM1S 0
set #CNUM1B 0
set #CNUM1S 0 ?
Fixd-d--xd
set $str СUCM1B
log Код первого символа в строке ord(СUCM1B)
log А должно быть ord(CUCM1B)
end_script
set $str СUCM1B
log Код первого символа в строке ord(СUCM1B)
log А должно быть ord(CUCM1B)
end_script
log clear
log mode compact
set #time1 timer + 15000 // 15 секунд
while 1 = 1
log Какие-то действия
wait 200
hint (20 clBlue 500 500 -1 -1 (#time1 timer))
if #time1 > timer // если не вышло время
set #image findimage (...) // ищем картинку
if #image > 0
log Тут что делать если картинка найдена
end_if
else // если время вышло
log Время вышло
end_if
log Ещё какие-то действия
wait 200
end_while
Так проблема с алертом всё еще актуальна. Он не закрывается а становится невидимым. Возможно будет работать поиск среди окон только видимого уровня. Как будет выглядеть команда на поиск окон среди видимых?
https://forum.uokit.com/index.php?showtopic=28991
С помощью плагина находим все окна 'Алерт' и проверяем видимость. find и visible.
Плагин распаковать в папку Plugins, которая рядом с пилотом должна быть создана.
Так, как теперь задать условие видимости в поиске?
Т.е. если я задаю
set #Visible WindowStatus.visible (132584)
set #Alert findwindow("Алерт")
while #Alert = 0 // пока не найдено
if #Visible = 1
:Findalert
set #Alert findwindow("Алерт")
wait random(150) + 0
if #Alert > 0
log Сигнал получен
goto findimag
else
goto Findalert
end_if
else
return
end_while
//__________________________________//
// --- Блок поиска Alerta ---
//__________________________________//
set #Alert findwindow("Алерт")
if #Alert > 0
log Алерт присутствует
end_if
while #Alert = 0 // пока не найдено
:Findalert
set #Alert findwindow("Алерт")
wait random(150) + 0
if #Alert > 0
goto Findvisible
else
goto Findalert
end_if
end_while
//________________________________________//
// ---Блок видимости Алерта ---
//________________________________________//
set #Visible WindowStatus.visible (329202)
if #Visible = 0
log Алерт невидим
log Ведется поиск
end_if
while #Visible = 0 // пока не найдено
:Findvisible
set #Visible WindowStatus.visible (329202)
wait random(150) + 0
if #Visible = 1
log Сигнал получен
goto findimag
else
goto Findalert
end_if
end_while
set #Alert findwindow("Алерт")
set #a WindowStatus.visible (#Alert)
if #a = 0
log Невидимо
else
if #a = 1
log Видимо
else
log Хендл не существует
end_if
end_if
end_script
Еще по таймерам не понял - их ограниченное количество чтоли?
Т.е. если я больше 5-ти захочу запустить они не сработают?
Там в справке перечислено всего 5? это пример или ограничение?
и может ли на одну картинку одновременно быть установлено несколько переменных?
т.е. у меня есть картинка "1"
переменные #a
#b
#c
Если установить
set #a findimage (1)
if sdsfsd
else
12312
end_if
set #b findimage (1)
if sdsfsd
else
12312
end_if
set #c findimage (1)
if sdsfsd
else
12312
end_if
set #time1 timer + 1000
set #time2 timer + 3000
set #time3 timer + 10000
log clear
log mode compact
while 1 = 1
if #time1 < timer
log 111 // выводить в лог сообщение раз в секунду
set #time1 timer + 1000
end_if
if #time2 < timer
log 222 // выводить в лог сообщение раз в 3 секунды
set #time2 timer + 3000
end_if
if #time3 < timer
log 333 // выводить в лог сообщение раз в 10 секунду
set #time3 timer + 10000
end_if
wait 100
end_while
end_script
set #b FindImage (0 0 1920 1080 (d:\myImages\wolf.bmp) %arr 2 80 20 5)
set #time1 #time1 timer + 1000
set #time2 #time2 timer + 3000
set #time3 #time3 timer + 10000
log clear
log mode compact
while 1 = 1
if #time1 < timer
log 111 // выводить в лог сообщение раз в секунду
set #time1 timer + 1000
end_if
if #time2 < timer
log 222 // выводить в лог сообщение раз в 3 секунды
set #time2 timer + 3000
end_if
if #time3 < timer
log 333 // выводить в лог сообщение раз в 10 секунду
set #time3 timer + 10000
end_if
wait 100
end_while
end_script
set #b FindImage (0 0 1920 1080 (d:\myImages\wolf.bmp) %arr 2 80 20 5)
Есть ли какой-то способ воздействовать на окно (закрыть его, сделать невидимым и пр.) не делая его активным?
http://uopilot.tati.pro/index.php?title=Showwindow
http://uopilot.tati.pro/index.php?title=SendMessage
[quote name='cirus' date='21.11.2017, 6:16' post='422255']
Всего 5. На самом деле достаточно одного, если его правильно использовать.
set #time1 #time1 timer + 1000
set #time2 #time2 timer + 3000
set #time3 #time3 timer + 10000
log clear
log mode compact
while 1 = 1
if #time1 < timer
log 111 // выводить в лог сообщение раз в секунду
set #time1 timer + 1000
end_if
set $path "C:"
set %cash[1] картинка
// будем искать картинку из файла C:\Program Files\UOPilot\images\картинка.bmp
set #a findimage (#startX #startY #endX #endY ($path%cash[1].bmp) %crds 2)
if #a > 0
log Изображение найдено в координатах X= %crds[1 1] Y= %crds[1 2]. //Кликнем на нём...
left %crds[1 1] %crds[1 2] // кликнули
else
log Изображение не найдено
end_if
http://uopilot.tati.pro/index.php?title=%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_%D0%BF%D0%B8%D0%BB%D0%BE%D1%82%D0%BD%D1%8B%D0%B9_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3
http://uopilot.tati.pro/index.php?title=Findimage
И только потом что-то заставлять искать или работать.
set #a findimage (0 0 1920 1080 (C:\UCP.bmp) %crds)
hint #a // результат поиска
if #a > 0
move %crds [1 1] %crds [1 2] // если найдена навести курсор
end_if
end_script
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)