Author Topic: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?  (Read 7728 times)

0 Members and 1 Guest are viewing this topic.

Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Хочу сделать так например
Чтоб в появившемся окне можно было ввести число от 1 до 9, а в сценарии в зависимости от введенного числа присваивались бы числовые переменные с координатами. По X и Y для каждого числа. Список координат есть в нем 9 пар координат. Можно такое слепить?

Loorik

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Code: (clickermann) [Select]
///---------
if($trigger=0)
   arrpush($arr, 1x100y100)  // 1-это то что вводишь, х100-значение известных координат по "х", y100-соответственно по"y"
   arrpush($arr, 2x200y200)
   arrpush($arr, 3x300y300)
   arrpush($arr, 4x400y400)
   arrpush($arr, 5x500y500)
   arrpush($arr, 6x600y600)
   arrpush($arr, 7x700y700)
   arrpush($arr, 8x800y800)
   arrpush($arr, 9x900y900)
   //...
   arrpush($arr, 10x1000y1000)
   //...
   arrpush($arr, 1000x10000y10000)
   $trigger=1
end_if
///---------
$vvod = int(inputbox("text",,10))
///---------
$SIZE=int(0)
while(($SIZE<ARRSIZE ($arr))&($vvod!0))
   $mask=strcut($arr[$SIZE], 0, strpos($arr[$SIZE], "x")-1 )
   if($mask=$vvod)
      print(STRCUT2 ($arr[$SIZE],strpos($arr[$SIZE], "x")+1,strpos($arr[$SIZE], "y")-1),":",STRCUT2($arr[$SIZE],strpos($arr[$SIZE], "y")+1,STRLEN($arr[$SIZE]))
      $SIZE=ARRSIZE ($arr)
   end_if
   inc($SIZE)
end_cyc
///---------
halt

можно если я правильно тебя понял. причем варианты зависят от фантазии...

Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Code: (clickermann) [Select]
///---------
if($trigger=0)
   arrpush($arr, 1x100y100)  // 1-это то что вводишь, х100-значение известных координат по "х", y100-соответственно по"y"
   arrpush($arr, 2x200y200)
   arrpush($arr, 3x300y300)
   arrpush($arr, 4x400y400)
   arrpush($arr, 5x500y500)
   arrpush($arr, 6x600y600)
   arrpush($arr, 7x700y700)
   arrpush($arr, 8x800y800)
   arrpush($arr, 9x900y900)
   //...
   arrpush($arr, 10x1000y1000)
   //...
   arrpush($arr, 1000x10000y10000)
   $trigger=1
end_if
///---------
$vvod = int(inputbox("text",,10))
///---------
$SIZE=int(0)
while(($SIZE<ARRSIZE ($arr))&($vvod!0))
   $mask=strcut($arr[$SIZE], 0, strpos($arr[$SIZE], "x")-1 )
   if($mask=$vvod)
      print(STRCUT2 ($arr[$SIZE],strpos($arr[$SIZE], "x")+1,strpos($arr[$SIZE], "y")-1),":",STRCUT2($arr[$SIZE],strpos($arr[$SIZE], "y")+1,STRLEN($arr[$SIZE]))
      $SIZE=ARRSIZE ($arr)
   end_if
   inc($SIZE)
end_cyc
///---------
halt

можно если я правильно тебя понял. причем варианты зависят от фантазии...
Объясню проще. В игре куча разных петов. С собой можно брать только 9 из кучи. В Бою игра выстраивает их внизу эрана для выбора. В списке питомцев (где их статы, здоровье и прочее они расположены так - 5 в верхнем ряду, 4 в нижнем. Суть такая. Я написал скрипт на питомца например в седьмом слоте. Покачал его и захотел качнуть другого. Итого имеем 9 скриптов. Много. Причем подошел бы один скрипт в котором можно координаты (тыка мышковыбора питомца в бою и координаты выбора питомца в списке обозначить как X1 Y1 и x2 y2.

Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Поиск по картинке не подходит ввиду того что картинки одного и того же Пета в бою и в списке разного размера.. Да и около сотни их уже в игре. Хотелось бы чтоб нажал в окне например 1 и скрипт понял что он выполняется для Пета в 1 слоте с конкретными координатами слота в бою и конкретными в списке питомцев

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Запутали сами человека. Он просто спрашивал про окно ввода.
В первом ответе 19 строка
$vvod = int(inputbox("text",,10))


Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Code: (clickermann) [Select]
SUB(poceball) //проверка на призовой покебол за каждые два часа нахождения в игре
  GETSCREEN
  COLORMODE(6)
  IF_PICTURE_IN (819,237, 1245,586, "poceball.bmp", -1, 100)
     LCLICK($_return1, $_return2)
     WAITMS(500)
  END_IF
END_SUB
 
walk: //если после перезагрузки страницы выкинуло на вход в локацию и начальная прогулка до моба
WAIT(2)
GETSCREEN
COLORMODE(6)
poceball()
IF_PICTURE_IN (982,255, 1050,330, "trener.bmp", -1, 100)  //если тренер на входе в локацию
  LCLICK(1017,339)
  WAIT(1)
  $check_down = 0
  WHILE($check_down = 0)
     GETSCREEN
     COLORMODE(6)
     IF_PICTURE_IN (964,508, 1070,583, "trener1.bmp", -1, 100)  //идем вниз до совпадения куска карты с частью тренера
        $check_down = 1
        WAIT(1)
     ELSE
        poceball()
        KEYPRESS(#DOWN)
        WAIT(1)
     END_IF
  END_CYC
  $check_left = 0
  WHILE($check_left = 0)
     GETSCREEN
     COLORMODE(6)
     IF_PICTURE_IN (692,522, 756,588, "trener2.bmp", -1, 100)   //идем влево до совпадения куска карты с частью тренера
        $check_left = 1
        WAIT(1)
     ELSE
        poceball()
        KEYPRESS(#LEFT)
        WAIT(1)
     END_IF
  END_CYC
  $check_up = 0
  WHILE($check_up = 0)
     GETSCREEN
     COLORMODE(6)
     IF_PICTURE_IN (720,365, 757,411, "trener3.bmp", -1, 100)   //идем вверх до совпадения куска карты с частью тренера
        $check_up = 1
        WAIT(1)
     ELSE
        poceball()
        KEYPRESS(#UP)
        WAIT(1)
     END_IF
  END_CYC
  $check_right = 0
  WHILE($check_right = 0)
     GETSCREEN
     COLORMODE(6)
     IF_PICTURE_IN (762,328, 821,389, "trener4.bmp", -1, 100)   //идем вправо до совпадения куска карты с частью тренера
        $check_right = 1
        WAIT(1)
     ELSE
        poceball()
        KEYPRESS(#RIGHT)
        WAIT(1)
     END_IF
  END_CYC
  GOTO(heal)   //дошли до нашего моба, переходим в проверку ХП пета
ELSE
  GOTO(captcha)
END_IF
 
 
heal:   //проверка ХП пета и отхил
poceball()
WAIT(1)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "skill.bmp") //закрываем всплывшее окно, если пет выучил новое умение
  MOVE($_return1, $_return2)
  WAITMS(300)
  LCLICK($_return1, $_return2)
  WAIT(1)
END_IF
LCLICK(729,199) //жмем "Питомцы"
WAITMS(600)
LCLICK(744,574)  //открываем экран питомца
WAITMS(600)
LCLICK(1337,361) //обновляем его ХП
WAIT(3)
LCLICK(748,263)  //к списку питомцев
WAITMS(500)
$check_hp = 0
$time = $_time_t + 20
WHILE(($check_hp = 0)&($time > $_time_t))  //проверка на ХП +таймер на 20 сек
  GETSCREEN
  COLORMODE(6)
  IF_PICTURE_IN (690,625, 815,660, "fullHP.bmp", -1, 100)
     $check_hp = 1
     $time = 0
     GOTO(fight)
  ELSE
     LCLICK(1180,200) //открываем рюкзак
     WAITMS(500)
     LCLICK(1160,355) //выбираем хилку
     WAITMS(500)
     LCLICK(1215,415) //нажимаем "съесть"
     WAITMS(500)
     LCLICK(1205,400) //выбираем раненного пета
     WAIT(1)
     GETSCREEN
     COLORMODE(6)
     IF_PICTURE_IN (990,580, 1060,840, "close.bmp", -1, 100)   //закрываем рюкзак
        LCLICK($_return1, $_return2)
        WAITMS(100)
     END_IF
     WAIT(4)
  END_IF
END_CYC
 
fight:             //нападение на моба
$time = 0
poceball()
LCLICK(823,201)  //нажимаем вкладку "Мир"
WAITMS(400)
poceball()
LCLICK(795,416)  //тыкаем на моба
WAITMS(600)
poceball()
LCLICK(1072,499) //нажимаем "поиск противника"
WAIT(1)
 
check:    //проверка на капчу
$check_mob = 0
WHILE($check_mob = 0)
  GETSCREEN
  COLORMODE(6)
  IF_PICTURE_IN (992,500, 1040,585, "field.bmp", -1, 100)
     WAIT(2)
     $check_mob = 1    //моб найден
     MOVE(1136,658)
     WAITMS(300)
     poceball()
     LCLICK(1136,658)  //выбираем пета
     WAITMS(300)
     GOTO(attack)
  ELSE                 //моб не найден
     poceball()
     WAITMS(500)
     GOTO(captcha)
  END_IF
END_CYC
 
captcha:  //капча, будь она неладна
WAIT(1)
poceball()
LCLICK(960,317) //нажатие на экран игры, чтобы сделать его активным
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (787,273, 851,328, "captcha.bmp", -1, 100)
  KEYPRESS(#F5)
  WAIT(10)   //ждем обновления страницы и прогрузки игры
  GOTO(walk)
ELSE
  GOTO(check)
END_IF
 
attack:  //сам процесс боя
$check_death = 0    //проверяем убили ли моба
WHILE($check_death = 0)
  poceball()
  WAITMS(20)
  LCLICK(915,650) //выставляем атаки
  WAITMS(300)
  LCLICK(915,650)
  WAITMS(300)
  LCLICK(915,650)
  WAITMS(300)
  LCLICK(990,602)  //запускаем ход
  WAIT(8)
  GETSCREEN
  COLORMODE(6)
  IF_PICTURE_IN (0,0, $_xmax, $_ymax, "lvlup.bmp") //повышен уровень пета
     $check_death = 1
     MOVE($_return1, $_return2)
     WAITMS(300)
     LCLICK($_return1, $_return2)
     WAIT(1)
     GETSCREEN
     COLORMODE(6)
  END_IF
  IF_PICTURE_IN (0,0, $_xmax, $_ymax, "win.bmp") //победа
     $check_death = 1
     MOVE($_return1, $_return2)
     WAITMS(300)
     LCLICK($_return1, $_return2)
     WAIT(1)
     GETSCREEN
     COLORMODE(6)
     GOTO(heal)
  END_IF
  IF_PICTURE_IN (0,0, $_xmax, $_ymax, "defeat.bmp") //поражение
     $check_death = 1
     MOVE($_return1, $_return2)
     WAITMS(300)
     LCLICK($_return1, $_return2)
     WAIT(1)
     GETSCREEN
     COLORMODE(6)
     GOTO(heal)
  END_IF
END_CYC

Вот собственно сам скрипт. Скрины нужных экранов во вложении. Винда 7 х64 максимальная, браузер мозилла, разрешение экрана 1920х1080 (эт так, на всякий случай)
чтоб не писать этот скрипт 9 раз на 100500 строк логически предположил что есть выход из ситуации. например вылезает окно с текстом "выберите в каком слоте пет для прокачки (1-9)?". введенное значение скрипт приписывает например в $slot. и в дальнейшем исходя из этого значения чтоб скрипт присвоил уже известные(!) координаты центра этого слота в онке списка питомцев и в выборе пета для боя.

Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Скрипт кстати еще сыроват. не могу понять где ошибка. то работает несколько часов кряду, то зависает на каком-либо месте... например всплывает окно после боя с результатами (получено опыта, полученный лут(хлам для крафта) с моба) с единственной кнопкой "закрыть", в скрипте участок:
Code: (clickermann) [Select]
attack:  //сам процесс боя
$check_death = 0    //проверяем убили ли моба
WHILE($check_death = 0)
 poceball()
 WAITMS(20)
 LCLICK(915,650) //выставляем атаки
 WAITMS(300)
 LCLICK(915,650)
 WAITMS(300)
 LCLICK(915,650)
 WAITMS(300)
 LCLICK(990,602)  //запускаем ход
 WAIT(8)
 GETSCREEN
 COLORMODE(6)
 IF_PICTURE_IN (0,0, $_xmax, $_ymax, "lvlup.bmp") //повышен уровень пета
    $check_death = 1
    MOVE($_return1, $_return2)
    WAITMS(300)
    LCLICK($_return1, $_return2)
    WAIT(1)
    GETSCREEN
    COLORMODE(6)
 END_IF
 IF_PICTURE_IN (0,0, $_xmax, $_ymax, "win.bmp") //победа
    $check_death = 1
    MOVE($_return1, $_return2)
    WAITMS(300)
    LCLICK($_return1, $_return2)
    WAIT(1)
    GETSCREEN
    COLORMODE(6)
    GOTO(heal)
 END_IF
 IF_PICTURE_IN (0,0, $_xmax, $_ymax, "defeat.bmp") //поражение
    $check_death = 1
    MOVE($_return1, $_return2)
    WAITMS(300)
    LCLICK($_return1, $_return2)
    WAIT(1)
    GETSCREEN
    COLORMODE(6)
    GOTO(heal)
 END_IF
END_CYC
и скрипт не видит "win.bmp". Тычет выбор атак до бесконечности.
если бы сразу вис то дело в нераспознавании "win.bmp", а если находит, находит и вдруг....не находит? На что грешить? Подскажите знающие люди.

Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Извините локацию не ту приложил.
метка walk: для другой локи. Во вложении.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Если находит, находит и вдруг не находит. Значит изменения в картинке. И в твоем случае они пробиваются через колормод. Добавь процент совпадения, только не увлекайся.


Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
То есть добавить ..., -1, 95) после имени искомой картинки?
по поводу предыдущих вопросов нет предложений? :-[ неужто всего бота до "клик-клик" сводить...

Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
зачем вы всё усложняете?
горячие клавиши и клмки по заранее известным координатам ещё никто не отменял.
Если же вы затрудняетесь с выражением своих мыслей, то советую, подумать что может ответить на ваш вопрос человек незнающий о какой игре речь и какие у вас причуды.
Возможно практически всё и указывать пета в переменной, перед завпуском скрипта и вызывать окно с кнопками или панелью ввода во время работы скрипта.
Предоставил на ваш суд максимум информации. Может так понятнее. Для каждого слота с петом получается по несколько пар координат. Вернее 4 пары.
1-я пара - центр слота на экране "список питомцев"
Code: (clickermann) [Select]
LCLICK(729,199) //жмем "Питомцы"
WAITMS(600)
LCLICK(744,574)  //открываем экран питомца //[color=red]меняем конкретные значения на x1,y1[/color]
WAITMS(600)
LCLICK(1337,361) //обновляем его ХП
WAIT(3)
LCLICK(748,263)  //к списку питомцев
2-я и 3-я пара - на том же экране. Координаты начала и конца области искомой картинки с ХП (красной полоской), в которой скрипт ищет картинку fullHP.bmp
Code: (clickermann) [Select]
WHILE(($check_hp = 0)&($time > $_time_t))  //проверка на ХП +таймер на 20 сек
 GETSCREEN
 COLORMODE(6)
 IF_PICTURE_IN (690,625, 815,660, "fullHP.bmp", -1, 100) //тут получаем IF_PICTURE_IN (x2,y2,x3,y3, "fullHP.bmp", -1, 100)
    $check_hp = 1
    $time = 0
    GOTO(fight)
 ELSE

4-я пара уже на экране выбора пета для боя.
Code: (clickermann) [Select]
IF_PICTURE_IN (992,500, 1040,585, "field.bmp", -1, 100)
    WAIT(2)
    $check_mob = 1    //моб найден
    MOVE(1136,658)
    WAITMS(300)
    poceball()
    LCLICK(1136,658)  //выбираем пета //тут получится LCLICK(x4,y4)
    WAITMS(300)
    GOTO(attack)
 ELSE                 //моб не найден
    poceball()
    WAITMS(500)
    GOTO(captcha)
 END_IF

Вот как такое реализовать через :
Quote
Запутали сами человека. Он просто спрашивал про окно ввода.
В первом ответе 19 строка
$vvod = int(inputbox("text",,10))

Loorik

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
прикольно - твой аватар в игре похож на нацу из хвоста феи, а петы на покемонов...

Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
прикольно - твой аватар в игре похож на нацу из хвоста феи, а петы на покемонов...
там все аватары (в игре именуются обликами тренера) взяты из разных аниме, а сами поки тупо взяты из мульта.... пока идет бета версия игры и их пока около ста, но каждую неделю добавляют либо нового пета либо эволюцию уже введенного ранее. В общем общая атмосфера мира покемонов сохранена.

Loorik

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
если я понял правильно:
1) тебе нужно заменить статические координаты на переменные (там где их нужно менять для петов (4 -пары))
2) в нужное место вставить вызов окна ввода
3) после ввода цифры (1...9) или через switch или через IF() изменить переменные координат на нужные - соответствующие введенной цифре

Loorik

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
пример на SWITCH

Code: (clickermann) [Select]
sub(vvod)
   $keys=48
   while(ISKEYDOWN (48)!1)
      if($keys=58)
         $keys=49
      end_if
      if(ISKEYDOWN ($keys)=1)
         SWITCH($keys)
         CASE(49)
            $text=1
         CASE(50)
            $text=2
         CASE(51)
            $text=3
         CASE(52)
            $text=4
         CASE(53)
            $text=5
         CASE(54)
            $text=6
         CASE(55)
            $text=7
         CASE(56)
            $text=8
         CASE(57)
            $text=9
         END_SWITCH
         $vvod = int(inputbox("text",$text,10))
         SWITCH($vvod)
         CASE(1)
            print(1)
            $x1=10
            $y1=10
         CASE(2)
            print(2)
            $x1=20
            $y1=20
         CASE(3)
            print(3)
            $x1=30
            $y1=30
         CASE(4)
            print(4)
            $x1=40
            $y1=40
         CASE(5)
            print(5)
            $x1=50
            $y1=50
         CASE(6)
            print(6)
            $x1=60
            $y1=60
         CASE(7)
            print(7)
            $x1=70
            $y1=70
         CASE(8)
            print(8)
            $x1=80
            $y1=80
         CASE(9)
            print(9)
            $x1=90
            $y1=90
         END_SWITCH
  ///
         move($x1,$y1)
         ///
      else
         inc($keys)
         waitms(5)
      end_if
   end_cyc
end_sub

vvod()


halt

запусти понажимай цифры над буквами 1...9 (0 - остановить)и следи за курсором