Author Topic: Помогите составить скрипт(Анализ изображения)  (Read 7609 times)

0 Members and 1 Guest are viewing this topic.

Valta

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Всем привет! Хотел бы попросить помощи знающим людям составить скрипт по пунктам которые написаны на скриншоте! буду очень благодарен.




поиск моба:
GETSCREEN
IF_PICTURE_IN (0,0, 1920,1080, "Image_45.bmp")
MOVE($_return1+10, $_return2+30)

удар скиллом:
GETSCREEN
IF_PICTURE_IN (738,1006,779,1053,"Image_44.bmp",-1,100)
keypress(#F2)

мана:
GETSCREEN
IF_PICTURE_IN (10,31,323,111,"Image_42.bmp",-1,100)
keypress(#F5)

хп персонажа:
GETSCREEN
IF_PICTURE_IN (5,32,337,106,"Image_41.bmp",-1,100)
keypress(#F3)

хп моба лут:
IF_PIXEL_IN (805,53, 1117,90, 1124919)
keypress(#F4)

Изображения проверил все работает и ищет по отдельности.

GetHigh

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
а вместе нихрена не пашет, да  ::)

Valta

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
кстати вопрос еще ,когда находит моба наводит мышь на него ,если поставить клацать на него левой мышкой камера летает в разные стороны. Как решить кто знает(

Valta

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
написал вот скрипт все работает в идеале кроме 2 первых пунктов ,если выделить цель при определенной дистанции начинает бить,собирает лут ,хилиться,регенит мп . а вот загвоздка в то что когда находит картинку поиска мобов он ее клацает постоянно, а мне нужно если нашел, 1-2 раза кликну,л он побежал и выполняется 3-4-5 пункт ,а если не находит моба выполняеться 2 пункт как бы крутит персонажа ,камеру для поиска. на деле вообщем выходит что он постоянно крутиться и клацает на моба -_-

поиск моба:
GETSCREEN
IF_PICTURE_IN (0,0, 1920,1080, "Image_45.bmp")
LCLICK($_return1+10, $_return2+30)
waitm(300)
LCLICK($_return1+10, $_return2+30)
goto удар скиллом
else

лево:
keydown(65)
wait(1)
keyup(65)
goto поиск моба

удар скиллом:
GETSCREEN
IF_PICTURE_IN (738,1006,779,1053,"Image_44.bmp",-1,100)
keypress(#F2)
goto хп моба лут
end_if

хп моба лут:
IF_PIXEL_IN (805,53, 1117,90, 1124919)
keypress(#F4)
goto хп персонажа
end_if

хп персонажа:
GETSCREEN
IF_PICTURE_IN (5,32,337,106,"Image_41.bmp",-1,100)
keypress(#F3)
goto мана
end_if

мана:
GETSCREEN
IF_PICTURE_IN (10,31,323,111,"Image_42.bmp",-1,100)
keypress(#F5)
goto хп моба лут
end_if

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Исправил ошибки, убрал бесмысленные ГОТО, добавил задержки после нажатий.

Code: (clickermann) [Select]
поиск моба:
GETSCREEN
IF_PICTURE_IN (0,0, 1920,1080, "Image_45.bmp")
   LCLICK($_return1+10, $_return2+30)
   waitms(300)
   LCLICK($_return1+10, $_return2+30)
   waitms(50)
else
   keydown(#A)
   wait(1)
   keyup(#A)
   goto (поиск моба)
end_if

GETSCREEN
IF_PICTURE_IN (738,1006,779,1053,"Image_44.bmp",-1,100)
   keypress(#F2)
   WAITMS(500)
end_if

хп моба лут:
IF_PIXEL_IN (805,53, 1117,90, 1124919)
   keypress(#F4)
   WAITMS(500)
end_if

GETSCREEN
IF_PICTURE_IN (5,32,337,106,"Image_41.bmp",-1,100)
   keypress(#F3)
   WAITMS(500)
end_if

GETSCREEN
IF_PICTURE_IN (10,31,323,111,"Image_42.bmp",-1,100)
   keypress(#F5)
   WAITMS(500)
   goto (хп моба лут)
end_if

Valta

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
опробывал( продолжает дальше клацать на мобов искать,а мне именно нужно нашел 1 раз кликнул и прекратил поиск до того пока не выполняться следующие пункты(

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
опробывал( продолжает дальше клацать на мобов искать,а мне именно нужно нашел 1 раз кликнул и прекратил поиск до того пока не выполняться следующие пункты(

Добавь задержки здесь
Code: (clickermann) [Select]
   keyup(#A)
   waitms(500)
   goto (поиск моба)

и здесь

Code: (clickermann) [Select]
   LCLICK($_return1+10, $_return2+30)
   waitms(300)
   LCLICK($_return1+10, $_return2+30)
   wait(2)
else

Valta

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
все равно лажа,буду искать решения( мб есть команда останавливающая раздел скрипта намертво,и включением после сбора лута(

Valta

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Всем привет! поднимал уже ету тему ,ну уже 2 сутки ломаю голову как сделать правильно этот скрипт.

Есть вот этот скрипт. В идеале он должен искать полоску моба когда находит нажимает 1-2 раза по нему левой клавишей и бежит к нему,если не находит начинаеться крутиться и искать ее. Если находит переходит к пункту 3(атакует,хилиться,регенит ману(эти 3 пункта работают). Подскажите возможно ли сделать остановку скрипта в указанном разделе? Просто на деле выходит что он находит моба и начинает строчить мышкой по нему иногда мимо и камера хаотично крутиться(можно поставить паузу,это такое.),но обычно клацает по другим мобам с такой же полоской и он начинает бегать туда сюда ... Вопрос заключается в том, возможно ли написать в этой программе команду которая будет тормозить пункт 1. Допустим нашел моба 1-2 раза клацнул персонаж побежал к нему,начинате бить хилиться регенить мп и ТОЛЬКО после того как будет выполнен последний пункт сбора ресурсов . Начинате выполняться пункт 1.



поиск моба:
GETSCREEN
IF_PICTURE_IN (0,0, 1920,1080, "Image_45.bmp")
MOVE($_return1+10, $_return2+30)
waitm(20)
MOVE($_return1+10, $_return2+30)
waitm(20)
else
keydown(#A)
wait(1)
keyup(#A)
goto (поиск моба)
end_if


Удар скиллом;
GETSCREEN
IF_PICTURE_IN (738,1006,779,1053,"Image_44.bmp",-1,100)
keypress(#F2)
WAITMS(500)
end_if

хп моба лут:
IF_PIXEL_IN (805,53, 1117,90, 1124919)
keypress(#F4)
WAITMS(500)
end_if

Хилл;
GETSCREEN
IF_PICTURE_IN (5,32,337,106,"Image_41.bmp",-1,100)
keypress(#F3)
WAITMS(500)
end_if

Мп;
GETSCREEN
IF_PICTURE_IN (10,31,323,111,"Image_42.bmp",-1,100)
keypress(#F5)
WAITMS(500)
goto (хп моба лут)
end_if


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Андрей! Вырвал тему из под пера. Хорошо что в буфере было...

Всем привет! поднимал уже ету тему ,ну уже 2 сутки ломаю голову как сделать правильно этот скрипт.

Есть вот этот скрипт. В идеале он должен искать полоску моба когда находит нажимает 1-2 раза по нему левой клавишей и бежит к нему,если не находит начинаеться крутиться и искать ее. Если находит переходит к пункту 3(атакует,хилиться,регенит ману(эти 3 пункта работают). Подскажите возможно ли сделать остановку скрипта в указанном разделе? Просто на деле выходит что он находит моба и начинает строчить мышкой по нему иногда мимо и камера хаотично крутиться(можно поставить паузу,это такое.),но обычно клацает по другим мобам с такой же полоской и он начинает бегать туда сюда ... Вопрос заключается в том, возможно ли написать в этой программе команду которая будет тормозить пункт 1. Допустим нашел моба 1-2 раза клацнул персонаж побежал к нему,начинате бить хилиться регенить мп и ТОЛЬКО после того как будет выполнен последний пункт сбора ресурсов . Начинате выполняться пункт 1.

[spoiler]
Code: (clickermann) [Select]
поиск моба:
GETSCREEN
IF_PICTURE_IN (0,0, 1920,1080, "Image_45.bmp")
MOVE($_return1+10, $_return2+30)
waitm(20)
MOVE($_return1+10, $_return2+30)
waitm(20)
else
keydown(#A)
wait(1)
keyup(#A)
goto (поиск моба)
end_if


Удар скиллом;
GETSCREEN
IF_PICTURE_IN (738,1006,779,1053,"Image_44.bmp",-1,100)
keypress(#F2)
WAITMS(500)
end_if

хп моба лут:
IF_PIXEL_IN (805,53, 1117,90, 1124919)
keypress(#F4)
WAITMS(500)
end_if

Хилл;
GETSCREEN
IF_PICTURE_IN (5,32,337,106,"Image_41.bmp",-1,100)
keypress(#F3)
WAITMS(500)
end_if

Мп;
GETSCREEN
IF_PICTURE_IN (10,31,323,111,"Image_42.bmp",-1,100)
keypress(#F5)
WAITMS(500)
goto (хп моба лут)
end_if
[/spoiler]

Конечно, всё можно. Для начала перестать косячить. Что за команда waitm(20) ?
То у тебя GOTO без скобок, то это.

И покажи где вот это:
В идеале он должен искать полоску моба когда находит нажимает 1-2 раза по нему левой клавишей и бежит к нему...
здесь....?
Code: (clickermann) [Select]
IF_PICTURE_IN (0,0, 1920,1080, "Image_45.bmp")
MOVE($_return1+10, $_return2+30)
waitm(20)
MOVE($_return1+10, $_return2+30)
waitm(20)


Для начала добейся стабильного нахождения нужной полоски. Как минимум используй процент совпадения, возможно цветокоррекцию. Полоска от дистанции меняет размер или нет?
Второе, после того, как будет стабильно находить - выбрасываем нахрен GOTO (если так нужно эту часть можешь пропустить) и пишем последовательность которая действительно нужна.

Если команды после первой должны выполняться циклически, тебе нужно перевести на нормальный язык фразу
и ТОЛЬКО после того как будет выполнен последний пункт сбора ресурсов.
Имеется ввиду как это должен определить скрипт? Как это определяешь ты когда играешь? А то получается что ты описываешь этот момент пространным человеческим языком без всяких критериев.
Примерные, возможные! ответы могут быть:
  • По окончании боя появляется табличка;
  • -//-  пропадает определённый элемент управления игры или меняется локация;
  • Не изменяются определённые признаки в течении времени t;
  • и т.д.

Если не можешь представить в голове, возьми листок и напиши последовательность действий, шаг за шагом.
Если есть условие отвечай не только на вопрос "если да, что делаем?" но и на "если нет, что делаем?".

+ Выложи нормальный полноразмерный скриншот в BMP или PNG.
Форматируй вставляемый код в сообщении (выпадающий список "Код", выбрать "Clickermann").


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Нафиг ты темы плодишь?

Нужно зациклить действия заключив их в цикл WHILE. Сначала идет поиск моба, Потом начинается бой. И вот чтобы этот цикл прервался нужно чтобы какое то условие определило что моб убит и изменило $boi = 0 на $boi = 1

Code: (clickermann) [Select]
// Поиск мобов
$Poick_moba = 0
WHILE($Poick_moba = 0)
   GETSCREEN
   IF_PICTURE_IN (0,0, 1920,1080, "Image_45.bmp")
      $Poick_moba = 1
      LCLICK($_return1+10, $_return2+30)
      waitms(300)
      LCLICK($_return1+10, $_return2+30)
      waitms(500)
   else
      keydown(#A)
      wait(1)
      keyup(#A)
      waitms(500)
   end_if
END_CYC

// Бой с мобами
$boi = 0
WHILE($boi = 0)
   
   
   GETSCREEN
   IF_PICTURE_IN (738,1006,779,1053,"Image_44.bmp",-1,100)
      keypress(#F2)
      WAITMS(500)
   end_if
   
   хп моба лут:
   GETSCREEN
   IF_PIXEL_IN (805,53, 1117,90, 1124919)
      keypress(#F4)
      WAITMS(500)
   end_if
   
   GETSCREEN
   IF_PICTURE_IN (5,32,337,106,"Image_41.bmp",-1,100)
      keypress(#F3)
      WAITMS(500)
   end_if
   
   GETSCREEN
   IF_PICTURE_IN (10,31,323,111,"Image_42.bmp",-1,100)
      keypress(#F5)
      WAITMS(500)
      goto (хп моба лут)
   end_if
   
END_CYC

Valta

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Андрей,Vint подскажите в последний раз что я пропустил ) я уже запутался .
http://pixs.ru/showimage/123png_5950616_11384641.png

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$Poick_moba = 0  //// ищет картинку моба пункт 1.
WHILE($Poick_moba = 0)
GETSCREEN
colormode(4)
IF_PICTURE_IN (0,0, 1920,1080, "Image_poisk_moba.bmp")

$Poick_moba = 1 //// Находит его, указывает мышкой на координаты,делает паузу и жмет 1 клик.(
MOVE($_return1+10, $_return2+30)
wait(0.1)
RCLICK($_xmouse, $_ymouse)
wait(0.1)
end_if

$Poick_moba = 2   /// После клика появляеться картинка пункт 2. ,ищет ее. заодно бежит к мобу к дистанции скилла 20м
GETSCREEN
COLORMODE(7)
IF_PICTURE_IN(722,29,1198,107,"Image_100.bmp",-1,100)
else     /// если не нашел картинку ,а ето бывает 50 50 и за того что медленно ищет. делает паузу в пол секунды и переходит опять к поиску моба в самое начало.
wait(0.5)
goto $Poisk moba = 0
end_if
END_CYC


$boi = 0     /// После того как мышка клацнула на моба и появилось картинка c полным хп моба пункт .2 и моб в зоне диапозона,начинает его бить. 3 пункт.
WHILE($boi = 0)
GETSCREEN
IF_PICTURE_IN (735,948,800,1021,"Image_33.bmp",-1,100)
keypress(#F2)
WAITMS(500)
end_if

GETSCREEN     //// Когда отметка хп достигает 60% пункт 4. начинает хилиться во время боя с мобом 
IF_PICTURE_IN (5,32,337,106,"Image_41.bmp",-1,100)
keypress(#F3)
WAITMS(500)
end_if

GETSCREEN   /// Ищет картинку убитого моба пункт 5. ,если нашел начинает лутать.
IF_PICTURE_IN (774,28,1149,109, "Image_101.bmp")
$boi = 1 
presskey(#F4)
wait(0.5)
presskey(#F4)
end_if

GETSCREEN  ////Когда лут собран, и нету 60%мп начинает пункт 6. регенить мп
IF_PICTURE_IN (10,31,323,111,"Image_42.bmp",-1,100)
wait(0.5)
keypress(#F5)
WAITM(0.1)
end_if
END_CYC
goto $Poick_moba = 0 ///// Когда все пункты выполнены,переходит в самое начало и повторяет