Author Topic: Помогите пожалуйста.  (Read 7923 times)

0 Members and 1 Guest are viewing this topic.

reinxasad

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Помогите пожалуйста.
« on: June 06, 2015, 07:21:40 AM »
Ребята, подскажите пожалуйста как лучше написать скрипт, желательно чтобы меньше времени ожидания было. Суть какая на рисунке №1 кнопка напасть. Как только скрипт ее находит нажимает её. Потом он должен перейти к поиску картинки на рис.2-3( есть 5 монстров разных которых надо прогнать и 7 которых  напасть) если нужный прогоняем, если нет нападаем.Потом он переходит к метке ,где убивает монстра и возвращается на начало скрипта, поиска кнопки напасть на рис 1. Пробовал через IF_PIXEL_IN ,ну почему то иногда цвета пересекаются у пары монстров. Мне желательно,чтобы ети действия выполнялись как можно с меньшей задержкой. В пилоте поиск картинки у меня выглядел так
:mob
set $g FindImage (0 0 1920 1080 abs (C:\uo\barakus.bmp) %kopa 2 abs)
set $h FindImage (0 0 1920 1080 abs (C:\uo\worm10.bmp) %kopa 2 abs)
set $i FindImage (0 0 1920 1080 abs (C:\uo\scorp.bmp) %kopa 2 abs)
set $a FindImage (0 0 1920 1080 abs (C:\uo\Irka.bmp) %kopa 2 abs)
set $b FindImage (0 0 1920 1080 abs (C:\uo\ara.bmp) %kopa 2 abs)
if $g > 0 or $h > 0 or $i > 0 or $a > 0 or $b > 0                             

  goto progon
 else
  goto napa
 end_if


А тут незнаю, как правильно сделать. Изначально на кнопку напасть я написал вот это


:start
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "fight.bmp")
     LCLICK($_return1, $_return2)
      WAITMS(100)

     
  GOTO(mob)
   END_IF

Ну потом у меня дальше все как то криво выходит:( Помогите пожалуйста, буду оч признателен.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите пожалуйста.
« Reply #1 on: June 06, 2015, 08:59:02 AM »
Прыгать никуда не нужно, особено из цикла!
Code: (clickermann) [Select]
//Рядом со скриптом должна быть папка Images в которую нужно поместить картинки
$check = 0
WHILE($check = 0) // ожидание картинки
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Images\Напасть.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAIT(2)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

FOR($num=1,$num<13) // цикл прогоняет по кругу 12 картинок
   // образец имен файлов от и до
   //Images\Монстр_1.bmp
   //...
   //Images\Монстр_12.bmp
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Images\Монстр_", $num, ".bmp"), -1, 100)     
      IF($num > 5)
         $num = 999 // сообщаем циклу что повторяться больше не нужно
         // Монстр_6.bmp - Монстр_12.bmp нападаем
         // тут нападение
         
      ELSE
         // Монстр_1.bmp - Монстр_5.bmp прогоняем
         // тут прогоняем
         
      END_IF
   END_IF
END_CYC
« Last Edit: June 06, 2015, 09:06:15 AM by Oraven »

reinxasad

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Re: Помогите пожалуйста.
« Reply #2 on: June 06, 2015, 09:17:13 AM »
Code: [Select]
Спасибо:) большое. Ну можно попросить вас еще  разжевать, вот отрезок

Code: (clickermann) [Select]
FOR($num=1,$num<13) // цикл прогоняет по кругу 12 картинок
   // образец имен файлов от и до
   //Images\Монстр_1.bmp
   //...
   //Images\Монстр_12.bmp


Вот название картинок:) Извиняюсь за наглость,а можете прям с ними написать как должно быть:)  картинка нападения " fight"  , а с монстрами "mob_1 - mob_5" А обязательно картинки тех на кого нападаем?или может проще если он не нашел нужную,чтобы напал на неё?


А что за картинка тут должна быть 
Code: (clickermann) [Select]
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Images\Монстр_", $num, ".bmp"), -1, 100)
Вот так?или опять что то напортачил))) у меня нажимает. А вот монстра видит,и дальше действия нет

Code: (clickermann) [Select]
$check = 0
WHILE($check = 0) // îæèäàíèå êàðòèíêè
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Images\fight.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAIT(2)
   ELSE
      WAITMS(50)
   END_IF
END_CYC
 FOR($num=1,$num<6 )
 //images\mob_1.bmp
  //images\mob_2.bmp
   //images\mob_3.bmp
    //images\mob_4.bmp
     //images\mob_5.bmp
      GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Images\mob_", $num, ".bmp"), -1, 100)     
      IF($num > 5)
         $num = 999
// mob_1.bmp - mob_5.bmp

LCLICK(836,527)  // 7822649

ELSE
LCLICK(704,511)  // 16711422
END_IF
   END_IF
END_CYC

« Last Edit: June 06, 2015, 10:09:22 AM by reinxasad »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите пожалуйста.
« Reply #3 on: June 06, 2015, 01:24:54 PM »
Цикл FOR каждый проход наращивает переменную $num.
Code: (clickermann) [Select]
FOR($num=1,$num<13)На первом проходе она равняется 1

STRCONCAT собирает строку из текста и переменных
Code: (clickermann) [Select]
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Images\Монстр_", $num, ".bmp"), -1, 100) На выходе мы имеем
Code: (clickermann) [Select]
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Images\Монстр_1.bmp", -1, 100) На следующем проходе цикла FOR уже
Code: (clickermann) [Select]
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Images\Монстр_2.bmp", -1, 100) и тд. таким образом каждый цикл будет искаться новая картинка.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите пожалуйста.
« Reply #4 on: June 06, 2015, 01:25:57 PM »
Code: (clickermann) [Select]
//images\mob_1.bmp
 //images\mob_2.bmp
  //images\mob_3.bmp
   //images\mob_4.bmp
    //images\mob_5.bmp

Это лишь комментарии для наглядности, в скрипте они не играю никакой роли.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите пожалуйста.
« Reply #5 on: June 06, 2015, 01:29:49 PM »
Добавь запись в лог чтоб понимать что происходит в условиях

Code: (clickermann) [Select]
$check = 0
WHILE($check = 0) // ожидание картинки
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Images\fight.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAIT(2)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

FOR($num=1,$num<6)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Images\mob_", $num, ".bmp"), -1, 100)
      LOGWRITE ("Найден момстр: ", $num)
      IF($num > 5)
         LOGWRITE ("Атака")
         $num = 999
         // mob_1.bmp - mob_5.bmp
         LCLICK(836,527)  // 7822649
      ELSE
         LOGWRITE ("Пропуск")
         LCLICK(704,511)  // 16711422
      END_IF
   END_IF
END_CYC
« Last Edit: June 06, 2015, 01:31:47 PM by Oraven »

reinxasad

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Re: Помогите пожалуйста.
« Reply #6 on: June 06, 2015, 01:47:40 PM »
Спасибо большое:)


13:44:51 Найден момстр: 2
13:44:51 Пропуск
13:46:31 Найден момстр: 2
13:46:31 Пропуск


Он находит,ну почему то не хочет нажимать на кнопку прогнать,хотя координату еще перепроверил и перебил:( А может через GOTO сделать?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите пожалуйста.
« Reply #7 on: June 06, 2015, 02:01:21 PM »
Он находит,ну почему то не хочет нажимать на кнопку прогнать,хотя координату еще перепроверил и перебил:( А может через GOTO сделать?

Тут гото вообще ни к чему. Разберись лучше с кликами

Иногда чтобы заработало, требуется писать вот такую конструкцию из наведений и дольших прожатий мыши

Code: (clickermann) [Select]
MOVE(836,527) // навел
WAITMS(100)
LDOWN(836,527) // зажал
WAITMS(60)
LUP(836,527) // отпустил
WAITMS(100)



reinxasad

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Re: Помогите пожалуйста.
« Reply #8 on: June 06, 2015, 02:06:35 PM »
Тут просто все действия надо,чтобы очень быстр происходили.А что то жуткие задержки. Через GOTO кстати нажалась,ну щас попробую еще как ты написал. Я пробовал через Пиксель ИН, и в одну строку все цвета монстров забивал тогда оч быстро ищет и нажимает., один минус пару монстров пересекаются по цвету. Может подскажешь, как можно тогда лучше через Пиксель Ин сделать, чтобы все быстро делалось. А то с картинками что то долго обрабатывает:( или я может кривой)))

Он находит,ну почему то не хочет нажимать на кнопку прогнать,хотя координату еще перепроверил и перебил:( А может через GOTO сделать?

Тут гото вообще ни к чему. Разберись лучше с кликами

Иногда чтобы заработало, требуется писать вот такую конструкцию из наведений и дольших прожатий мыши

Code: (clickermann) [Select]
MOVE(836,527) // навел
WAITMS(100)
LDOWN(836,527) // зажал
WAITMS(60)
LUP(836,527) // отпустил
WAITMS(100)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите пожалуйста.
« Reply #9 on: June 06, 2015, 04:38:43 PM »
выпрыгивать из цикла через гото нельзя.

Картинки нужно делать маленькие 5х5 или широкие но по высоте 2-3 пиксела. Ну и конечно зону поиска нужно ограничить предполагаемым местом появления этой картинки.

reinxasad

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Re: Помогите пожалуйста.
« Reply #10 on: June 07, 2015, 01:32:54 PM »
:))) Эхх трудновато для меня это. Можно попросить тогда еще момент. Лучше с пиксель ин. Я вот тут сделал такой себе))))как не странно работает даже:DD Можно попросить его как то в порядок может лучше привести.
Вот ето часть ищет картинку напасть.
Code: (clickermann) [Select]
start:
$check = 0
WHILE($check = 0) // ожидание картинки
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Images\fight.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
LCLICK(915,299)  // 12576249
LCLICK(650,553)  // 7098152

GOTO(mob)
ELSE
GOTO(kill)
   END_IF
END_CYC
После когда найдет её, надо чтобы перешло к етому пункту
Code: (clickermann) [Select]
mob:
GETSCREEN
IF_PIXEL_IN (490,371, 519,464, 4348148, 6453979  )// червь
waitms(100)
LCLICK(835,528)  // 7165237
END_IF
IF_PIXEL_IN (478,400, 509,404, 11253808, 9410362) // скорп
waitms(100)
LCLICK(836,537)  // 9598024
END_IF
IF_PIXEL_IN (491,411, 494,411, 5105896, 10354175) // баракус
waitms(100)
LCLICK(834,494)  // 9466695
END_IF
IF_PIXEL_IN (453,371, 492,373, 2372573, 3688163 ) //ара
waitms(100)
LCLICK(838,494)  // 9466695
END_IF
IF_PIXEL_IN (500,413, 509,413, 2309997, 3694738  ) //ирка
waitms(100)
LCLICK(833,523)  // 10979149
ELSE
waitms(100)
LCLICK(725,516)  // кабан   
waitms(100)
LCLICK(722,538)  // крисп праз
waitms(100)
LCLICK(655,527)  // брл дева
waitms(100)
GOTO(kill)
end_if
Чтобы искала пока не найдет картинку, можно думаю чтобы раза 2-3 по кругу пронгало если не найдет, то вернулось обратно к 1му пукнту к поиску кнопки напасть. А если нашёл нужную картинку перешел к етому пункту потом убивать

Code: (clickermann) [Select]
kill:
GETSCREEN
IF_PIXEL_IN(512,273, 520,274, 516,272, 511,261, 523,269, 538,266,  2017650, 1331506, 1930825, 2039775, 4145151, 2043903 )
waitms(300)
LCLICK(368,728)  // 15651552
WAITMS(1500)
LCLICK(667,526)  // 14598228
WAITMS(100)
LCLICK(717,581)  // 7822649
waitms(300)
LCLICK(860,620)  // 6902065
waitms(300)
LCLICK(713,582)  // 7165237
WAITMS(1500)
LCLICK(553,632)  // 203583
GOTO(start)
END_IF

и Еще вот в конце независимую часть, чтобы обновляло уже саму игру:)
Code: (clickermann) [Select]
IF($time < $_time_t)
LCLICK(1151,312)  // 10526880
waitms(100)
LCLICK(128,70)  // 16708843
WAITMS(13000)
LCLICK(1124,130)  // 15790320
WAITMS(1000)
LCLICK(534,633)  // 1256792
waitms(100)
LCLICK(512,329)  // 30375
waitms(100)
LCLICK(512,329)  // 30375
WAITMS(200)
LCLICK(1176,129)  // 10526880
WAITMS(100)
RCLICK(1353,170)  // 16777142
WAITMS(300)
LCLICK(1400,241)  // 26316
WAITMS(1000)
LCLICK(1122,313)  // 0
WAITMS(200)
LCLICK(1633,263)  // 0
waitms(100)
LCLICK(538,634)  // 993877
$time = $_time_t + RND(400) // таймер
END_IF


Спасибо еще раз огромное:) и извиняюсь за такие напряги.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите пожалуйста.
« Reply #11 on: June 07, 2015, 02:26:55 PM »
На гото ты далеко не уедешь...

Вот твой скрипт. В нем я использовал подпрограммы.
Ты должен знать что тело подпрограммы выполняется только после вызова, после того как подпрограмма отработает выполнение возвращается на следующую строку после вызова.
Вызов обязательно должен быть ниже самой подпрограммы.

Выполнение здесь начинается на 61 строке.
Кстати IF_PIXEL_IN(512,273, 520,274, 516,272, 511,261, 523,269, 538,266,  2017650, 1331506, 1930825, 2039775, 4145151, 2043903) Это цвета или координаты? В функции IF_PIXEL_IN первые 4 числа отвечают за зону поиска, остальные это возможные цвета поиска.
Code: (clickermann) [Select]
//== ПОДПРОГРАММЫ ===========================================
SUB(kill)
   GETSCREEN
   IF_PIXEL_IN(512,273, 520,274, 516,272, 511,261, 523,269, 538,266,  2017650, 1331506, 1930825, 2039775, 4145151, 2043903 )
      waitms(300)
      LCLICK(368,728)  // 15651552
      WAITMS(1500)
      LCLICK(667,526)  // 14598228
      WAITMS(100)
      LCLICK(717,581)  // 7822649
      waitms(300)
      LCLICK(860,620)  // 6902065
      waitms(300)
      LCLICK(713,582)  // 7165237
      WAITMS(1500)
      LCLICK(553,632)  // 203583
   END_IF
END_SUB

SUB(mob)
   $time1 = $_time_t + 2 // таймер на 2 секунды
   WHILE($time1 > $_time_t) // повторяем поиск в течении 2х сек
      GETSCREEN
      IF_PIXEL_IN (490,371, 519,464, 4348148, 6453979)// червь
         waitms(100)
         LCLICK(835,528)  // 7165237
      END_IF
      IF_PIXEL_IN (478,400, 509,404, 11253808, 9410362) // скорп
         waitms(100)
         LCLICK(836,537)  // 9598024
      END_IF
      IF_PIXEL_IN (491,411, 494,411, 5105896, 10354175) // баракус
         waitms(100)
         LCLICK(834,494)  // 9466695
      END_IF
      IF_PIXEL_IN (453,371, 492,373, 2372573, 3688163) //ара
         waitms(100)
         LCLICK(838,494)  // 9466695
      END_IF
      IF_PIXEL_IN (500,413, 509,413, 2309997, 3694738) //ирка
         waitms(100)
         LCLICK(833,523)  // 10979149
      ELSE
         waitms(100)
         LCLICK(725,516)  // кабан
         waitms(100)
         LCLICK(722,538)  // крисп праз
         waitms(100)
         LCLICK(655,527)  // брл дева
         waitms(100)
         $time1 = 0 // останавливаем цикл
         kill() // переходим к убийству
      end_if
   END_CYC
END_SUB
//=============================================


//=== Начало ==========================================

DEFINE($time, $_time_t + 400) // чтобы сработало через 400 сек после запуска
IF($time < $_time_t)
   LCLICK(1151,312)  // 10526880
   waitms(100)
   LCLICK(128,70)  // 16708843
   WAITMS(13000)
   LCLICK(1124,130)  // 15790320
   WAITMS(1000)
   LCLICK(534,633)  // 1256792
   waitms(100)
   LCLICK(512,329)  // 30375
   waitms(100)
   LCLICK(512,329)  // 30375
   WAITMS(200)
   LCLICK(1176,129)  // 10526880
   WAITMS(100)
   RCLICK(1353,170)  // 16777142
   WAITMS(300)
   LCLICK(1400,241)  // 26316
   WAITMS(1000)
   LCLICK(1122,313)  // 0
   WAITMS(200)
   LCLICK(1633,263)  // 0
   waitms(100)
   LCLICK(538,634)  // 993877
   $time = $_time_t + 400 // таймер
END_IF

$check = 0
WHILE($check = 0) // ожидание картинки
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Images\fight.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
      LCLICK(915,299)  // 12576249
      WAITMS(100)
      LCLICK(650,553)  // 7098152
      WAITMS(100)
      mob() // переходим к анализу мобов
   ELSE
      kill() // переходим к убийству
   END_IF
END_CYC

//=== Конец ==========================================

reinxasad

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Re: Помогите пожалуйста.
« Reply #12 on: June 07, 2015, 02:32:22 PM »
Cпасибо большое:) да там 6 координат вбито и 6 цветов:)) Вроде работала ето строчка:D Я как видишь профан в етом. ЩАс пойду опробую скрипт

На гото ты далеко не уедешь...

Вот твой скрипт. В нем я использовал подпрограммы.
Ты должен знать что тело подпрограммы выполняется только после вызова, после того как подпрограмма отработает выполнение возвращается на следующую строку после вызова.
Вызов обязательно должен быть ниже самой подпрограммы.

Выполнение здесь начинается на 61 строке.
Кстати IF_PIXEL_IN(512,273, 520,274, 516,272, 511,261, 523,269, 538,266,  2017650, 1331506, 1930825, 2039775, 4145151, 2043903) Это цвета или координаты? В функции IF_PIXEL_IN первые 4 числа отвечают за зону поиска, остальные это возможные цвета поиска.
Code: (clickermann) [Select]
//== ПОДПРОГРАММЫ ===========================================
SUB(kill)
   GETSCREEN
   IF_PIXEL_IN(512,273, 520,274, 516,272, 511,261, 523,269, 538,266,  2017650, 1331506, 1930825, 2039775, 4145151, 2043903 )
      waitms(300)
      LCLICK(368,728)  // 15651552
      WAITMS(1500)
      LCLICK(667,526)  // 14598228
      WAITMS(100)
      LCLICK(717,581)  // 7822649
      waitms(300)
      LCLICK(860,620)  // 6902065
      waitms(300)
      LCLICK(713,582)  // 7165237
      WAITMS(1500)
      LCLICK(553,632)  // 203583
   END_IF
END_SUB

SUB(mob)
   $time1 = $_time_t + 2 // таймер на 2 секунды
   WHILE($time1 > $_time_t) // повторяем поиск в течении 2х сек
      GETSCREEN
      IF_PIXEL_IN (490,371, 519,464, 4348148, 6453979)// червь
         waitms(100)
         LCLICK(835,528)  // 7165237
      END_IF
      IF_PIXEL_IN (478,400, 509,404, 11253808, 9410362) // скорп
         waitms(100)
         LCLICK(836,537)  // 9598024
      END_IF
      IF_PIXEL_IN (491,411, 494,411, 5105896, 10354175) // баракус
         waitms(100)
         LCLICK(834,494)  // 9466695
      END_IF
      IF_PIXEL_IN (453,371, 492,373, 2372573, 3688163) //ара
         waitms(100)
         LCLICK(838,494)  // 9466695
      END_IF
      IF_PIXEL_IN (500,413, 509,413, 2309997, 3694738) //ирка
         waitms(100)
         LCLICK(833,523)  // 10979149
      ELSE
         waitms(100)
         LCLICK(725,516)  // кабан
         waitms(100)
         LCLICK(722,538)  // крисп праз
         waitms(100)
         LCLICK(655,527)  // брл дева
         waitms(100)
         $time1 = 0 // останавливаем цикл
         kill() // переходим к убийству
      end_if
   END_CYC
END_SUB
//=============================================


//=== Начало ==========================================

DEFINE($time, $_time_t + 400) // чтобы сработало через 400 сек после запуска
IF($time < $_time_t)
   LCLICK(1151,312)  // 10526880
   waitms(100)
   LCLICK(128,70)  // 16708843
   WAITMS(13000)
   LCLICK(1124,130)  // 15790320
   WAITMS(1000)
   LCLICK(534,633)  // 1256792
   waitms(100)
   LCLICK(512,329)  // 30375
   waitms(100)
   LCLICK(512,329)  // 30375
   WAITMS(200)
   LCLICK(1176,129)  // 10526880
   WAITMS(100)
   RCLICK(1353,170)  // 16777142
   WAITMS(300)
   LCLICK(1400,241)  // 26316
   WAITMS(1000)
   LCLICK(1122,313)  // 0
   WAITMS(200)
   LCLICK(1633,263)  // 0
   waitms(100)
   LCLICK(538,634)  // 993877
   $time = $_time_t + 400 // таймер
END_IF

$check = 0
WHILE($check = 0) // ожидание картинки
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Images\fight.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
      LCLICK(915,299)  // 12576249
      WAITMS(100)
      LCLICK(650,553)  // 7098152
      WAITMS(100)
      mob() // переходим к анализу мобов
   ELSE
      kill() // переходим к убийству
   END_IF
END_CYC

//=== Конец ==========================================

reinxasad

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Re: Помогите пожалуйста.
« Reply #13 on: June 07, 2015, 03:06:26 PM »
Спасибо огромнейшее:)) Вроде все круто работает ;) 


Cпасибо большое:) да там 6 координат вбито и 6 цветов:)) Вроде работала ето строчка:D Я как видишь профан в етом. ЩАс пойду опробую скрипт

На гото ты далеко не уедешь...

Вот твой скрипт. В нем я использовал подпрограммы.
Ты должен знать что тело подпрограммы выполняется только после вызова, после того как подпрограмма отработает выполнение возвращается на следующую строку после вызова.
Вызов обязательно должен быть ниже самой подпрограммы.

Выполнение здесь начинается на 61 строке.
Кстати IF_PIXEL_IN(512,273, 520,274, 516,272, 511,261, 523,269, 538,266,  2017650, 1331506, 1930825, 2039775, 4145151, 2043903) Это цвета или координаты? В функции IF_PIXEL_IN первые 4 числа отвечают за зону поиска, остальные это возможные цвета поиска.
Code: (clickermann) [Select]
//== ПОДПРОГРАММЫ ===========================================
SUB(kill)
   GETSCREEN
   IF_PIXEL_IN(512,273, 520,274, 516,272, 511,261, 523,269, 538,266,  2017650, 1331506, 1930825, 2039775, 4145151, 2043903 )
      waitms(300)
      LCLICK(368,728)  // 15651552
      WAITMS(1500)
      LCLICK(667,526)  // 14598228
      WAITMS(100)
      LCLICK(717,581)  // 7822649
      waitms(300)
      LCLICK(860,620)  // 6902065
      waitms(300)
      LCLICK(713,582)  // 7165237
      WAITMS(1500)
      LCLICK(553,632)  // 203583
   END_IF
END_SUB

SUB(mob)
   $time1 = $_time_t + 2 // таймер на 2 секунды
   WHILE($time1 > $_time_t) // повторяем поиск в течении 2х сек
      GETSCREEN
      IF_PIXEL_IN (490,371, 519,464, 4348148, 6453979)// червь
         waitms(100)
         LCLICK(835,528)  // 7165237
      END_IF
      IF_PIXEL_IN (478,400, 509,404, 11253808, 9410362) // скорп
         waitms(100)
         LCLICK(836,537)  // 9598024
      END_IF
      IF_PIXEL_IN (491,411, 494,411, 5105896, 10354175) // баракус
         waitms(100)
         LCLICK(834,494)  // 9466695
      END_IF
      IF_PIXEL_IN (453,371, 492,373, 2372573, 3688163) //ара
         waitms(100)
         LCLICK(838,494)  // 9466695
      END_IF
      IF_PIXEL_IN (500,413, 509,413, 2309997, 3694738) //ирка
         waitms(100)
         LCLICK(833,523)  // 10979149
      ELSE
         waitms(100)
         LCLICK(725,516)  // кабан
         waitms(100)
         LCLICK(722,538)  // крисп праз
         waitms(100)
         LCLICK(655,527)  // брл дева
         waitms(100)
         $time1 = 0 // останавливаем цикл
         kill() // переходим к убийству
      end_if
   END_CYC
END_SUB
//=============================================


//=== Начало ==========================================

DEFINE($time, $_time_t + 400) // чтобы сработало через 400 сек после запуска
IF($time < $_time_t)
   LCLICK(1151,312)  // 10526880
   waitms(100)
   LCLICK(128,70)  // 16708843
   WAITMS(13000)
   LCLICK(1124,130)  // 15790320
   WAITMS(1000)
   LCLICK(534,633)  // 1256792
   waitms(100)
   LCLICK(512,329)  // 30375
   waitms(100)
   LCLICK(512,329)  // 30375
   WAITMS(200)
   LCLICK(1176,129)  // 10526880
   WAITMS(100)
   RCLICK(1353,170)  // 16777142
   WAITMS(300)
   LCLICK(1400,241)  // 26316
   WAITMS(1000)
   LCLICK(1122,313)  // 0
   WAITMS(200)
   LCLICK(1633,263)  // 0
   waitms(100)
   LCLICK(538,634)  // 993877
   $time = $_time_t + 400 // таймер
END_IF

$check = 0
WHILE($check = 0) // ожидание картинки
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Images\fight.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
      LCLICK(915,299)  // 12576249
      WAITMS(100)
      LCLICK(650,553)  // 7098152
      WAITMS(100)
      mob() // переходим к анализу мобов
   ELSE
      kill() // переходим к убийству
   END_IF
END_CYC

//=== Конец ==========================================

reinxasad

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Re: Помогите пожалуйста.
« Reply #14 on: June 07, 2015, 03:48:43 PM »
Хотел спросить,а этот отрезок будет каждые 400 сек повторяться или только 1 раз? после запуска. Мне надо просто,чтобы он  через каждые 400 сек обновлял
Code: (clickermann) [Select]
DEFINE($time, $_time_t + 400) // чтобы сработало через 400 сек после запуска
IF($time < $_time_t)
   LCLICK(1151,312)  // 10526880
   waitms(100)
   LCLICK(128,70)  // 16708843
   WAITMS(13000)
   LCLICK(1124,130)  // 15790320
   WAITMS(1000)
   LCLICK(534,633)  // 1256792
   waitms(100)
   LCLICK(512,329)  // 30375
   waitms(100)
   LCLICK(512,329)  // 30375
   WAITMS(200)
   LCLICK(1176,129)  // 10526880
   WAITMS(100)
   RCLICK(1353,170)  // 16777142
   WAITMS(300)
   LCLICK(1400,241)  // 26316
   WAITMS(1000)
   LCLICK(1122,313)  // 0
   WAITMS(200)
   LCLICK(1633,263)  // 0
   waitms(100)
   LCLICK(538,634)  // 993877
   $time = $_time_t + 400 // таймер
END_IF
И можно по его типу туда же еще такой маленький кусочек засунуть.,чтобы тоже каждые 240 сек повторялся
Code: (clickermann) [Select]
DEFINE($time, $_time_t + 240) // чтобы сработало через 240 сек после запуска
IF($time < $_time_t)
   LCLICK(924,226)  // 16777215
WAITMS(200)
   LCLICK(550,636)  // 413552
  $time = $_time_t + 240 // таймер
END_IF
Cпасибо большое:) да там 6 координат вбито и 6 цветов:)) Вроде работала ето строчка:D Я как видишь профан в етом. ЩАс пойду опробую скрипт

На гото ты далеко не уедешь...

Вот твой скрипт. В нем я использовал подпрограммы.
Ты должен знать что тело подпрограммы выполняется только после вызова, после того как подпрограмма отработает выполнение возвращается на следующую строку после вызова.
Вызов обязательно должен быть ниже самой подпрограммы.

Выполнение здесь начинается на 61 строке.
Кстати IF_PIXEL_IN(512,273, 520,274, 516,272, 511,261, 523,269, 538,266,  2017650, 1331506, 1930825, 2039775, 4145151, 2043903) Это цвета или координаты? В функции IF_PIXEL_IN первые 4 числа отвечают за зону поиска, остальные это возможные цвета поиска.
Code: (clickermann) [Select]
//== ПОДПРОГРАММЫ ===========================================
SUB(kill)
   GETSCREEN
   IF_PIXEL_IN(512,273, 520,274, 516,272, 511,261, 523,269, 538,266,  2017650, 1331506, 1930825, 2039775, 4145151, 2043903 )
      waitms(300)
      LCLICK(368,728)  // 15651552
      WAITMS(1500)
      LCLICK(667,526)  // 14598228
      WAITMS(100)
      LCLICK(717,581)  // 7822649
      waitms(300)
      LCLICK(860,620)  // 6902065
      waitms(300)
      LCLICK(713,582)  // 7165237
      WAITMS(1500)
      LCLICK(553,632)  // 203583
   END_IF
END_SUB

SUB(mob)
   $time1 = $_time_t + 2 // таймер на 2 секунды
   WHILE($time1 > $_time_t) // повторяем поиск в течении 2х сек
      GETSCREEN
      IF_PIXEL_IN (490,371, 519,464, 4348148, 6453979)// червь
         waitms(100)
         LCLICK(835,528)  // 7165237
      END_IF
      IF_PIXEL_IN (478,400, 509,404, 11253808, 9410362) // скорп
         waitms(100)
         LCLICK(836,537)  // 9598024
      END_IF
      IF_PIXEL_IN (491,411, 494,411, 5105896, 10354175) // баракус
         waitms(100)
         LCLICK(834,494)  // 9466695
      END_IF
      IF_PIXEL_IN (453,371, 492,373, 2372573, 3688163) //ара
         waitms(100)
         LCLICK(838,494)  // 9466695
      END_IF
      IF_PIXEL_IN (500,413, 509,413, 2309997, 3694738) //ирка
         waitms(100)
         LCLICK(833,523)  // 10979149
      ELSE
         waitms(100)
         LCLICK(725,516)  // кабан
         waitms(100)
         LCLICK(722,538)  // крисп праз
         waitms(100)
         LCLICK(655,527)  // брл дева
         waitms(100)
         $time1 = 0 // останавливаем цикл
         kill() // переходим к убийству
      end_if
   END_CYC
END_SUB
//=============================================


//=== Начало ==========================================

DEFINE($time, $_time_t + 400) // чтобы сработало через 400 сек после запуска
IF($time < $_time_t)
   LCLICK(1151,312)  // 10526880
   waitms(100)
   LCLICK(128,70)  // 16708843
   WAITMS(13000)
   LCLICK(1124,130)  // 15790320
   WAITMS(1000)
   LCLICK(534,633)  // 1256792
   waitms(100)
   LCLICK(512,329)  // 30375
   waitms(100)
   LCLICK(512,329)  // 30375
   WAITMS(200)
   LCLICK(1176,129)  // 10526880
   WAITMS(100)
   RCLICK(1353,170)  // 16777142
   WAITMS(300)
   LCLICK(1400,241)  // 26316
   WAITMS(1000)
   LCLICK(1122,313)  // 0
   WAITMS(200)
   LCLICK(1633,263)  // 0
   waitms(100)
   LCLICK(538,634)  // 993877
   $time = $_time_t + 400 // таймер
END_IF

$check = 0
WHILE($check = 0) // ожидание картинки
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Images\fight.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
      LCLICK(915,299)  // 12576249
      WAITMS(100)
      LCLICK(650,553)  // 7098152
      WAITMS(100)
      mob() // переходим к анализу мобов
   ELSE
      kill() // переходим к убийству
   END_IF
END_CYC

//=== Конец ==========================================
« Last Edit: June 07, 2015, 03:50:47 PM by reinxasad »