Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: NightWanted on April 18, 2016, 05:48:01 PM

Title: Повтор с условием
Post by: NightWanted on April 18, 2016, 05:48:01 PM
Доброго дня! Прошу помощи! Что нужно добавить в код? Суть: если PXL(638,328) = 11845568, то LCLICK(735,464), если нет, то LCLICK(523,466) до тех пор, пока не будет найден искомый цвет. Уже разные варианты пробывал, но че-то не то все. Заранее спасибо!

$count = 0
WHILE ($count = 0)
   LCLICK(523,466)
   WAIT(1)
   GETSCREEN
   IF PXL(638,328) = 11845568
      $count = 1
   END_IF
END_CYC
WAIT(1)
LCLICK(735,464)
Title: Re: Повтор с условием
Post by: NightWanted on April 18, 2016, 07:42:06 PM
Огромное спасибо! Все работает!
Title: Re: Повтор с условием
Post by: alllsts on April 18, 2016, 09:32:01 PM
Доброго времени суток
Пытаюсь написать сценарий для фарма кадавра в ГОРОД МЕРТВЫХ
не могу разобраться с циклом
Title: Re: Повтор с условием
Post by: Oraven on April 18, 2016, 09:52:04 PM
В цикле не хватает параметра начального значения FOR($a=0,$a<5) иначе у тебя он на втором проходе просто не будет срабатывать.

Кроме того тебе нужен цикл ожидания окончания боя по каким то признакам. А до тех пор кликер должен просто долбить по кнопке ударить.

Code: (clickermann) [Select]
$check = 0
WHILE($check = 0) // ожидание окончания боя
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
      $check = 1 // если найдено выходим из цикла
   ELSE // если не найдено
      LCLICK(10,10) // кнопка удара
      WAITMS(200)
   END_IF
END_CYC
Title: Re: Повтор с условием
Post by: Vint on April 19, 2016, 08:44:03 AM
Code: (clickermann) [Select]
$count = 0
WHILE ($count = 0)
   GETSCREEN
   IF(PXL(638,328) = 11845568)
      $count = 1
      LCLICK(735,464)
      LOGWRITE ("цвет обнаружен")
   ELSE
      LCLICK(523,466)
   END_IF
   WAIT(1)
END_CYC


Зачем лишние сущности? Цикл WHILE и так цикл с условием, без всяких дополнительных условий и переменных-флагов
Code: (clickermann) [Select]
GETSCREEN
WHILE(PXL(638,328) ! 11845568)
   LCLICK(523,466)
   WAIT(1)
   GETSCREEN
END_CYC
LCLICK(735,464)
Title: Re: Повтор с условием
Post by: Vint on April 19, 2016, 10:34:46 AM
Ну да. Только иногда "исходники" - это нагромождение лишних команд на пару сотен строк, которые можно заменить десятком.
Просто здесь задача была описана словами нормально, а не как обычно  :D Можно даже по тексту всё сделать.
Title: Re: Повтор с условием
Post by: NightWanted on April 19, 2016, 11:52:35 AM
Доброго дня! Помогите еще немного... Суть вопроса: В игре есть различные противники, и сильные и слабые. Одних надо с трех заходов убивать, а другим хватит и одного. Что нужно добавить, чтобы при обнаружении PXL(665,339) = 0 (смерти первого противника), кликер переходил сразу ко второму противнику? На данный момент получается так, что после смерти первого противника, до окончания цикла, они начинают беспорядочно бить всех остальных, вместо одного. Заранее спасибо!

Code: (clickermann) [Select]
LCLICK(738,238)//ВЫБИРАЕМ ПЕРВОГО ПРОТИВНИКА
WAITMS(500)
FOR ($i, $i<3)//ЧТОБЫ ДЕЛАЛИ ТРИ ЗАХОДА НА ПРОТИВНИКА
   GETSCREEN
   IF (PXL(795,444) = 14145500)//УДАР 1-ОГО ПЕРСА
      LCLICK(795,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(814,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   GETSCREEN
   IF (PXL(662,446) = 13882070)//УДАР 2-ОГО ПЕРСА
      LCLICK(662,446)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(681,508)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   GETSCREEN
   IF (PXL(535,444) = 14540000)//УДАР 3-ОГО ПЕРСА
      LCLICK(535,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(546,512)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   GETSCREEN
   IF (PXL(409,443) = 14277343)//УДАР 4-ОГО ПЕРСА
      LCLICK(409,443)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(421,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   GETSCREEN
   IF (PXL(311,445) = 14343133)//УДАР 5-ОГО ПЕРСА
      LCLICK(311,445)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(286,506)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAIT(13)//ОЖИДАНИЕ АТАКИ СОПЕРНИКА
END_CYC//КОНЕЦ ЦИКЛА
LCLICK(790,310)//ВЫБИРАЕМ ВТОРОГО ПРОТИВНИКА
WAITMS(500)
FOR ($a, $a<3)//ЧТОБЫ ДЕЛАЛИ ТРИ ЗАХОДА НА ПРОТИВНИКА
GETSCREEN
   IF (PXL(795,444) = 14145500)//УДАР 1-ОГО ПЕРСА
      LCLICK(795,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(814,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   GETSCREEN
   IF (PXL(662,446) = 13882070)//УДАР 2-ОГО ПЕРСА
      LCLICK(662,446)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(681,508)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   GETSCREEN
   IF (PXL(535,444) = 14540000)//УДАР 3-ОГО ПЕРСА
      LCLICK(535,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(546,512)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   GETSCREEN
   IF (PXL(409,443) = 14277343)//УДАР 4-ОГО ПЕРСА
      LCLICK(409,443)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(421,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   GETSCREEN
   IF (PXL(311,445) = 14343133)//УДАР 5-ОГО ПЕРСА
      LCLICK(311,445)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(286,506)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAIT(13)//ОЖИДАНИЕ АТАКИ СОПЕРНИКА
END_CYC//КОНЕЦ ЦИКЛА
Title: Re: Повтор с условием
Post by: Oraven on April 19, 2016, 01:19:12 PM
Code: (clickermann) [Select]
SUB(died)
   GETSCREEN
   IF(PXL(665,339) = 0)
      $a=999
   END_IF
END_SUB

LCLICK(738,238)//ВЫБИРАЕМ ПЕРВОГО ПРОТИВНИКА
WAITMS(500)

FOR($a=0,$a<3)//ЧТОБЫ ДЕЛАЛИ ТРИ ЗАХОДА НА ПРОТИВНИКА
   GETSCREEN
   IF (PXL(795,444) = 14145500)//УДАР 1-ОГО ПЕРСА
      LCLICK(795,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(814,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   GETSCREEN
   IF (PXL(662,446) = 13882070)//УДАР 2-ОГО ПЕРСА
      LCLICK(662,446)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(681,508)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   GETSCREEN
   IF (PXL(535,444) = 14540000)//УДАР 3-ОГО ПЕРСА
      LCLICK(535,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(546,512)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   GETSCREEN
   IF (PXL(409,443) = 14277343)//УДАР 4-ОГО ПЕРСА
      LCLICK(409,443)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(421,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   GETSCREEN
   IF (PXL(311,445) = 14343133)//УДАР 5-ОГО ПЕРСА
      LCLICK(311,445)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(286,506)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   
   skip:
   WAIT(13)//ОЖИДАНИЕ АТАКИ СОПЕРНИКА
END_CYC//КОНЕЦ ЦИКЛА

LCLICK(790,310)//ВЫБИРАЕМ ВТОРОГО ПРОТИВНИКА
WAITMS(500)

FOR($a=0,$a<3)//ЧТОБЫ ДЕЛАЛИ ТРИ ЗАХОДА НА ПРОТИВНИКА
   GETSCREEN
   IF (PXL(795,444) = 14145500)//УДАР 1-ОГО ПЕРСА
      LCLICK(795,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(814,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   GETSCREEN
   IF (PXL(662,446) = 13882070)//УДАР 2-ОГО ПЕРСА
      LCLICK(662,446)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(681,508)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   GETSCREEN
   IF (PXL(535,444) = 14540000)//УДАР 3-ОГО ПЕРСА
      LCLICK(535,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(546,512)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   GETSCREEN
   IF (PXL(409,443) = 14277343)//УДАР 4-ОГО ПЕРСА
      LCLICK(409,443)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(421,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   GETSCREEN
   IF (PXL(311,445) = 14343133)//УДАР 5-ОГО ПЕРСА
      LCLICK(311,445)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(286,506)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   
   skip:
   WAIT(13)//ОЖИДАНИЕ АТАКИ СОПЕРНИКА
END_CYC//КОНЕЦ ЦИКЛА
Title: Re: Повтор с условием
Post by: NightWanted on April 19, 2016, 02:26:19 PM
Спасибо. Но чего-то не хватает. Кликер видит смерть 1-ого противника, но потом почему-то сначала делает первым персом удар наугад, потом переключается на второго противника и останавливается. Через несколько секунд включает режим автобоя (он должен срабатывать, но только после смерти второго противника). Я выложу полностью весь код... Пришлось добавить еще вэйты между ударами, чтобы он успевал остановиться и переключиться на другого противника...

Code: (clickermann) [Select]
WAIT(1)
LCLICK(674,14)//КЛИК НА ОКНО
WAIT(2)
LCLICK(110,324)//РЕЙДЫ
WAIT(2)
LCLICK(719,488)//НАЙТИ ПРОТИВНИКА
WAIT(2)
$count = 0//ПЕРЕМЕННАЯ
WHILE ($count = 0)//ПОИСК БОТА
   GETSCREEN
   IF (PXL(638,328) = 11845568)
      $count = 1
      LCLICK(735,464)//АТАКА
      LOGWRITE ("цвет обнаружен")
   ELSE
      LCLICK(523,466)//НАЙТИ ДРУГОГО
      WAIT(3)
   END_IF
   WAIT(1)
END_CYC//КОНЕЦ ПОИСКА
WAIT(1)
LCLICK(946,526)//АТАКА
WAIT(2)

SUB(died)
   GETSCREEN
   IF(PXL(665,339) = 0)
      $a=999
   END_IF
END_SUB

LCLICK(738,238)//ВЫБИРАЕМ ПЕРВОГО ПРОТИВНИКА
WAITMS(500)

FOR($a=0,$a<3)//ЧТОБЫ ДЕЛАЛИ ТРИ ЗАХОДА НА ПРОТИВНИКА
   GETSCREEN
   IF (PXL(795,444) = 14145500)//УДАР 1-ОГО ПЕРСА
      LCLICK(795,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(814,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   WAITMS(500)
   
   GETSCREEN
   IF (PXL(662,446) = 13882070)//УДАР 2-ОГО ПЕРСА
      LCLICK(662,446)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(681,508)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   WAITMS(500)
   
   GETSCREEN
   IF (PXL(535,444) = 14540000)//УДАР 3-ОГО ПЕРСА
      LCLICK(535,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(546,512)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   WAITMS(500)
   
   GETSCREEN
   IF (PXL(409,443) = 14277343)//УДАР 4-ОГО ПЕРСА
      LCLICK(409,443)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(421,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   WAITMS(500)
   
   GETSCREEN
   IF (PXL(311,445) = 14343133)//УДАР 5-ОГО ПЕРСА
      LCLICK(311,445)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(286,506)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   
   skip:
   WAIT(13)//ОЖИДАНИЕ АТАКИ СОПЕРНИКА
END_CYC//КОНЕЦ ЦИКЛА

LCLICK(790,310)//ВЫБИРАЕМ ВТОРОГО ПРОТИВНИКА
WAITMS(500)

FOR($a=0,$a<3)//ЧТОБЫ ДЕЛАЛИ ТРИ ЗАХОДА НА ПРОТИВНИКА
   GETSCREEN
   IF (PXL(795,444) = 14145500)//УДАР 1-ОГО ПЕРСА
      LCLICK(795,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(814,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   WAITMS(500)
   
   GETSCREEN
   IF (PXL(662,446) = 13882070)//УДАР 2-ОГО ПЕРСА
      LCLICK(662,446)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(681,508)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   WAITMS(500)
   
   GETSCREEN
   IF (PXL(535,444) = 14540000)//УДАР 3-ОГО ПЕРСА
      LCLICK(535,444)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(546,512)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   WAITMS(500)
   
   GETSCREEN
   IF (PXL(409,443) = 14277343)//УДАР 4-ОГО ПЕРСА
      LCLICK(409,443)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(421,509)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   IF($a=999)
      GOTO(skip)
   END_IF
   
   WAITMS(500)
   
   GETSCREEN
   IF (PXL(311,445) = 14343133)//УДАР 5-ОГО ПЕРСА
      LCLICK(311,445)//ПРИ АДРЕНАЛИНЕ
      LOGWRITE ("цвет обнаружен")
      WAIT(4)
   ELSE
      LCLICK(286,506)//БЕЗ АДРЕНАЛИНА
   END_IF
   WAITMS(500)
   died()
   
   skip:
   WAIT(13)//ОЖИДАНИЕ АТАКИ СОПЕРНИКА
END_CYC//КОНЕЦ ЦИКЛА
LCLICK(95,535)//ВКЛЮЧЕНИЕ РЕЖИМА АВТОБОЯ
WAIT(110)//ПРОДОЛЖИТЕЛЬНОСТЬ БОЯ
GETSCREEN
IF (PXL(579,475) = 9805730)//ПРОВЕРКА ПОБЕДЫ
   LCLICK(579,475)//ПРИ ПОБЕДЕ
ELSE
   LCLICK(658,474)//ПРИ ПОРАЖЕНИИ
END_IF
WAIT(2)
LCLICK(992,61)//ВЫХОД ИЗ РЕЙДОВ
WAIT(2)
Title: Re: Повтор с условием
Post by: Vint on April 19, 2016, 03:20:32 PM
Потому что в коде две одинаковых метки skip:
Title: Re: Повтор с условием
Post by: NightWanted on April 19, 2016, 03:52:16 PM
все равно не получается( извините за нубство... вот видео, как должно быть в идеале https://youtu.be/ZzLBVkfDk60 (https://youtu.be/ZzLBVkfDk60). Я думаю, может сделать два потока? Первый поток будет отвечать за удары, а второй переключаться между противниками. Т.е. запускаем первый поток, как только нужный пиксел приобретает нужный цвет, поток приостанавливается. В это время второй поток кликает на другого противника, и первый поток после этого возобновляется. Подскажите, как это осуществить. Заранее спасибо!
Title: Re: Повтор с условием
Post by: Vint on April 19, 2016, 04:33:31 PM
все равно не получается( извините за нубство... вот видео, как должно быть в идеале https://youtu.be/ZzLBVkfDk60 (https://youtu.be/ZzLBVkfDk60). Я думаю, может сделать два потока? Первый поток будет отвечать за удары, а второй переключаться между противниками. Т.е. запускаем первый поток, как только нужный пиксел приобретает нужный цвет, поток приостанавливается. В это время второй поток кликает на другого противника, и первый поток после этого возобновляется. Подскажите, как это осуществить. Заранее спасибо!

Не нужно заниматься ерундой. Какие потоки? Зачем?
Title: Re: Повтор с условием
Post by: alllsts on April 19, 2016, 04:51:30 PM
В цикле не хватает параметра начального значения FOR($a=0,$a<5) иначе у тебя он на втором проходе просто не будет срабатывать.

Кроме того тебе нужен цикл ожидания окончания боя по каким то признакам. А до тех пор кликер должен просто долбить по кнопке ударить.

Code: (clickermann) [Select]
$check = 0
WHILE($check = 0) // ожидание окончания боя
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
      $check = 1 // если найдено выходим из цикла
   ELSE // если не найдено
      LCLICK(10,10) // кнопка удара
      WAITMS(200)
   END_IF
END_CYC
Спасибо, буду экперементировать
Title: Re: Повтор с условием
Post by: alllsts on April 19, 2016, 04:53:14 PM
чем вас не устраивает имеющийся на форуме скрипт фарма кадавров в ГМ?
Зачем вообще их фармить? это только портит персонажа, гараздо полезнее прокачиваться на арене и груповых боях, а фармить на цитадели и убивая простых зомби.
зачем нужен цикл FOR ведь сила перса постоянно меняется и живучесть разных кадавров тоже и сколько ударов будет сделано до победы угадать трудно.

Спасибо за совет, но скрипт написан под контакт, я же играю на одноклассниках
Title: Re: Повтор с условием
Post by: NightWanted on April 19, 2016, 05:16:40 PM
Не нужно заниматься ерундой. Какие потоки? Зачем?

Vint, а что Вы можете предложить? Вот, что делает кликер https://youtu.be/QMaa2Vm3JcE (https://youtu.be/QMaa2Vm3JcE)
Все равно после первого противника идет переключение на второго, а дальше почему-то включается сразу автобой... Подскажите, как это исправить?
Title: Re: Повтор с условием
Post by: NightWanted on April 19, 2016, 07:10:57 PM
Еще один вопросик, в плане реализации... Есть какая-нибудь возможность перевести цифры из изображения в текст? Или нужно будет обязательно пользоваться доп. программами по распознаванию?
Title: Re: Повтор с условием
Post by: Vint on April 20, 2016, 11:04:31 AM
Vint, а что Вы можете предложить? Вот, что делает кликер https://youtu.be/QMaa2Vm3JcE (https://youtu.be/QMaa2Vm3JcE)
Все равно после первого противника идет переключение на второго, а дальше почему-то включается сразу автобой... Подскажите, как это исправить?

Предлагаю всё переделать.
Куча повторяющегося лишнего кода.
Зачем при поиске адреналин/не адреналин используются разные точки с разными цветами?
Не учтены все задержки. 500 мс перед скрином на смерть мало, от там падает не меньше секунды.

В итоге получится что-то типа такого кода (пример)
Code: (clickermann) [Select]
SUB(battle)
   WAITMS(500)
   GETSCREEN
   WHILE(PXL(665,339) ! 0)
      IF (PXL(795 - ($xx*$pers), 444) = 14145500) //УДАР ПЕРСА
         LCLICK(795 - ($xx*$pers),444)                          //ПРИ АДРЕНАЛИНЕ
         WAIT(4)
      ELSE
         LCLICK(814 - ($xx*$pers),509)            //БЕЗ АДРЕНАЛИНА
      END_IF
     
      INC($pers)
      IF($pers = 5)
         $pers = 0
         WAIT(13)  //ОЖИДАНИЕ АТАКИ СОПЕРНИКА
      END_IF
     
      WAITMS(1000)
      GETSCREEN
   END_CYC
END_SUB

$xx = 130
$pers = 0

LCLICK(738,238) //ВЫБИРАЕМ ПЕРВОГО ПРОТИВНИКА
battle()
LCLICK(790,310) //ВЫБИРАЕМ ВТОРОГО ПРОТИВНИКА
battle()

Для вычисления координат нужен полноразмерный не сжатый скриншот.

P.S. Мне не очень понятен выбор координат для атаки противника и для поиска смерти. Если они всегда одни, то OK
Ещё не очень нравится всё на задержках. Лучше определять зарядился наш перс или нет.
Title: Re: Повтор с условием
Post by: NightWanted on April 20, 2016, 12:28:44 PM
Предлагаю всё переделать.
Куча повторяющегося лишнего кода.
Зачем при поиске адреналин/не адреналин используются разные точки с разными цветами?
Не учтены все задержки. 500 мс перед скрином на смерть мало, от там падает не меньше секунды.

P.S. Мне не очень понятен выбор координат для атаки противника и для поиска смерти. Если они всегда одни, то OK
Ещё не очень нравится всё на задержках. Лучше определять зарядился наш перс или нет.

Vint, спасибо за ответ. Адреналин у каждого перса срабатывает в разное время. И один и тот же пиксел при адреналине (в кружочке) имеет почему-то разный цвет. Поэтому, пришлось координату при адреналине прописывать каждому в отдельности. По поводу задержек, Вы сами говорите, что времени на определение смерти мало + в те моменты когда идет ход соперника, она сам может применять адреналин, а тогда включается анимация, что тоже отнимает время (а когда у противника будет адреналин то же неизвестно). Координаты для противников 1 или 2, я выбрал произвольно. Просто если сразу включить автобой, они ударяют беспорядочно, и шанс выиграть очень мал. Поэтому нужно избавиться от двоих, а потом уже включать автобой. Координаты противника всегда одинаковы, а смерть я определяю по тени, когда он падает. Огромное спасибо за код, сейчас поиграюсь с ним, я в принципе именно это и хотел. Я уже все в игре систематизировал, осталось только с рейдами разобраться). Еще раз огромное спасибо!