Author Topic: Объединение одинаковых команд для разных картинок.  (Read 2703 times)

0 Members and 2 Guests are viewing this topic.

Veromos

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Добрый день, как можно сделать скрипт более компактным. Видел на форуме что используют формулы, похожего для картинок найти не смог.
Можно как то совместить блоки *hand* и  *take* ? ( задержка между ними от 1 до 5 секунд максимум)
Возможно ли настроить #ENTER ( при привязки к окну) замена на #13 и #0x0D не помогает.


Code: [Select]
target:
GETSCREEN
IF_PICTURE_IN (20,5, 900,500, "a.bmp", -1, 70)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYPRESS(#1)
   WAITMS(300)
END_IF
IF_PICTURE_IN (20,5, 900,500, "b.bmp", -1, 70)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYPRESS(#1)
   WAITMS(300)
END_IF
IF_PICTURE_IN (20,5, 900,500, "c.bmp", -1, 70)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYPRESS(#1)
   WAITMS(300)
END_IF
//d,e,f... таких картинок в сумме больше десятка
GOTO(hand)
hand:
GETSCREEN
IF_PIXEL_IN(220,5, 900,500, 5761023)
   KEYPRESS(#ENTER)
   WAITMS(2000)
END_IF
IF_PICTURE_IN (20,5, 900,500, "1.bmp", -1, 90)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
IF_PICTURE_IN (20,5, 900,500, "2.bmp", -1, 90)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
IF_PICTURE_IN (20,5, 900,500, "3.bmp", -1, 90)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
IF_PICTURE_IN (20,5, 900,500, "4.bmp", -1, 90)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
GOTO(take) // *take* будет присутствовать всегда если находит *hand*
take:
GETSCREEN
IF_PICTURE_IN (20,5, 900,500, "11.bmp", -1, 100)
   KEYPRESS(#ENTER)  // перестает корректно работать при привязке к окну клиента
   WAITMS(100)
END_IF
WAITMS(50)
GOTO(target)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
В этом коде зачем GOTO? Ни один из них не нужен.

Упростить, вот пример:
Code: (clickermann) [Select]
hand:
GETSCREEN
IF_PIXEL_IN(220,5, 900,500, 5761023)
   KEYPRESS(#ENTER)
   WAITMS(2000)
END_IF
GETSCREEN
FOR($i=1, $i < 5)
   IF_PICTURE_IN (20,5, 900,500, STRCONCAT($i, ".bmp"), -1, 90)
      LCLICK($_return1, $_return2)
      WAITMS(100)
      $i = 100 // если нужно прервать перебор при нахождении.
   END_IF   
END_CYC
А с буквами проще переименовать в цифры. Можно постоянную буквенную часть+индексная цифровая.
Если хочешь, можно заморочится и с буквами. Например взять строку "abcdef...." и брать в цикле букву под следующим номером.


В чём проблема совмещения блоков *hand* и  *take*? Берёшь и совмещаешь. В чём затык не понятно.

По привязке... всё зависит от приложения. Раз не принимает, значит не принимает. Можно попробовать режим
#ps2_keyboard прописать в начале. Но это только если есть подключенное устройство PS/2.
« Last Edit: August 10, 2015, 05:20:58 PM by Vint »


Veromos

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Клик мышью норм проходит, #ENTER хотел сделать потому что тут на форуме или в вашей группе в вк прочел, что если есть возможность заменить нажатие мышью на нажатие клавиш будет лучше.
Сделал задержку в 5 секунд теперь связка *hand* и  *take* работает , раньше появление картинки "mob...bmp" могло вклинится между ними и начинался бой.( перс не успевал дойти до убитого моба если появлялся другой и начинал атаку)
А с  *постоянную буквенную часть+индексная цифровая* приношу извинения за дезинформацию.
Я заменил название картинок буквами тут в коде a, b, c... чтобы убрать трудно читаемые название моих картинок *vidstopimobastoyawegonamne2.bmp* *vidmobaslevaiduwego2.bmp* и т.д. всего около 20 картинок таких вышло.
При  вставке таким способом кликер видит все картинки как одну и не находит.
 
Code: [Select]
GETSCREEN
FOR($i=1, $i < 5)
   IF_PICTURE_IN (20,5, 900,500, STRCONCAT($i, "mob1.bmp", "mob2.bmp", "mob3.bmp", "mob4.bmp", "mob5.bmp", "mob6.bmp", "mob7.bmp", "mob8.bmp",), -1, 70)
      LCLICK($_return1, $_return2)
      WAITMS(100)
      KEYPRESS(#1)
      WAITMS(300)
      $i = 100 // если нужно прервать перебор при нахождении.
   END_IF
END_CYC
GETSCREEN
IF_PIXEL_IN(20,5, 900,500, 5761023)
   LCLICK($_return1, $_return2)
   WAIT(5)
END_IF
GETSCREEN
FOR($i=1, $i < 5)
   IF_PICTURE_IN (20,5, 900,500, STRCONCAT($i, "vid1.bmp", "vid2.bmp", "vid3.bmp", "vid4.bmp"), -1, 90)
      LCLICK($_return1, $_return2)
      WAIT(5)
      $i = 100 // если нужно прервать перебор при нахождении.
   END_IF
END_CYC
GETSCREEN
IF_PICTURE_IN (200,45, 760,240, "lut.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Правильно пишется так
Code: (clickermann) [Select]
GETSCREEN
FOR($i=1, $i < 8)
   IF_PICTURE_IN (20,5, 900,500, STRCONCAT("mob",$i,".bmp"), -1, 70)
      LCLICK($_return1, $_return2)
      WAITMS(100)
      KEYPRESS(#1)
      WAITMS(300)
      $i = 100 // если нужно прервать перебор при нахождении.
   END_IF
END_CYC

GETSCREEN
IF_PIXEL_IN(20,5, 900,500, 5761023)
   LCLICK($_return1, $_return2)
   WAIT(5)
END_IF

GETSCREEN
FOR($i=1, $i < 4)
   IF_PICTURE_IN (20,5, 900,500, STRCONCAT("vid",$i,".bmp"), -1, 90)
      LCLICK($_return1, $_return2)
      WAIT(5)
      $i = 100 // если нужно прервать перебор при нахождении.
   END_IF
END_CYC

GETSCREEN
IF_PICTURE_IN (200,45, 760,240, "lut.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
стр.  FOR($i=1, $i < 5)