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

Основной раздел => Общие вопросы => Topic started by: Olegreus on February 20, 2015, 05:16:08 PM

Title: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 20, 2015, 05:16:08 PM
Хочу сделать так например
Чтоб в появившемся окне можно было ввести число от 1 до 9, а в сценарии в зависимости от введенного числа присваивались бы числовые переменные с координатами. По X и Y для каждого числа. Список координат есть в нем 9 пар координат. Можно такое слепить?
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Loorik on February 20, 2015, 11:29:34 PM
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

можно если я правильно тебя понял. причем варианты зависят от фантазии...
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 21, 2015, 12:32:21 AM
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.
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 21, 2015, 12:36:50 AM
Поиск по картинке не подходит ввиду того что картинки одного и того же Пета в бою и в списке разного размера.. Да и около сотни их уже в игре. Хотелось бы чтоб нажал в окне например 1 и скрипт понял что он выполняется для Пета в 1 слоте с конкретными координатами слота в бою и конкретными в списке питомцев
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Vint on February 21, 2015, 03:09:05 PM
Запутали сами человека. Он просто спрашивал про окно ввода.
В первом ответе 19 строка
$vvod = int(inputbox("text",,10))
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 21, 2015, 08:30:19 PM
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. и в дальнейшем исходя из этого значения чтоб скрипт присвоил уже известные(!) координаты центра этого слота в онке списка питомцев и в выборе пета для боя.
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 21, 2015, 08:42:04 PM
Скрипт кстати еще сыроват. не могу понять где ошибка. то работает несколько часов кряду, то зависает на каком-либо месте... например всплывает окно после боя с результатами (получено опыта, полученный лут(хлам для крафта) с моба) с единственной кнопкой "закрыть", в скрипте участок:
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", а если находит, находит и вдруг....не находит? На что грешить? Подскажите знающие люди.
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 21, 2015, 08:46:06 PM
Извините локацию не ту приложил.
метка walk: для другой локи. Во вложении.
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Vint on February 21, 2015, 08:57:30 PM
Если находит, находит и вдруг не находит. Значит изменения в картинке. И в твоем случае они пробиваются через колормод. Добавь процент совпадения, только не увлекайся.
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 21, 2015, 09:03:28 PM
То есть добавить ..., -1, 95) после имени искомой картинки?
по поводу предыдущих вопросов нет предложений? :-[ неужто всего бота до "клик-клик" сводить...
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 21, 2015, 09:19:32 PM
зачем вы всё усложняете?
горячие клавиши и клмки по заранее известным координатам ещё никто не отменял.
Если же вы затрудняетесь с выражением своих мыслей, то советую, подумать что может ответить на ваш вопрос человек незнающий о какой игре речь и какие у вас причуды.
Возможно практически всё и указывать пета в переменной, перед завпуском скрипта и вызывать окно с кнопками или панелью ввода во время работы скрипта.
Предоставил на ваш суд максимум информации. Может так понятнее. Для каждого слота с петом получается по несколько пар координат. Вернее 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))
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Loorik on February 21, 2015, 09:22:08 PM
прикольно - твой аватар в игре похож на нацу из хвоста феи, а петы на покемонов...
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 21, 2015, 09:50:04 PM
прикольно - твой аватар в игре похож на нацу из хвоста феи, а петы на покемонов...
там все аватары (в игре именуются обликами тренера) взяты из разных аниме, а сами поки тупо взяты из мульта.... пока идет бета версия игры и их пока около ста, но каждую неделю добавляют либо нового пета либо эволюцию уже введенного ранее. В общем общая атмосфера мира покемонов сохранена.
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Loorik on February 21, 2015, 11:04:17 PM
если я понял правильно:
1) тебе нужно заменить статические координаты на переменные (там где их нужно менять для петов (4 -пары))
2) в нужное место вставить вызов окна ввода
3) после ввода цифры (1...9) или через switch или через IF() изменить переменные координат на нужные - соответствующие введенной цифре
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Loorik on February 21, 2015, 11:30:00 PM
пример на 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 - остановить)и следи за курсором
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 22, 2015, 12:40:24 AM
Шикарная идея!!!
Меня смутило что в справке написано что - inputbox строковая функция. Думал она будет ошибку выдавать воспринимая введенную цифру как текст. Этим думаю можно обойти. Спасибо! Попробую завтра и отпишусь!
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 22, 2015, 09:36:01 PM
while(ISKEYDOWN (48)!1)
   if(ISKEYDOWN ($keys)=1)
      SWITCH($keys)
      CASE(49)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 1-ого слота
      CASE(50)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 2-ого слота
      CASE(51)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 3-ого слота
      CASE(52)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 4-ого слота
      CASE(53)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 5-ого слота
      CASE(54)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 6-ого слота
      CASE(55)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 7-ого слота
      CASE(56)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 8-ого слота
      CASE(57)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 9-ого слота
      DEFAULT
         WAITMS(10)
      END_SWITCH
   END_IF
END_CYC

Такой скрипт подойдет чтоб без ввода в окно обойтись?
И будет ли основной скрипт бота принимать в себя значения присвоенных координат отсюда если запустить этот кусочек дочерним потоком?
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Oraven on February 22, 2015, 10:21:18 PM
Функция ISKEYDOWN только и всего делает что проверяет зажата указанная клавиша или нет. У тебя там какая то не рабочая ерунда.

И будет ли основной скрипт бота принимать в себя значения присвоенных координат отсюда если запустить этот кусочек дочерним потоком?
Переменные в потоках пока не изолированы. Поэтому конечно будет.

Вот верный рабочий скрипт

Code: (clickermann) [Select]
THREAD(keys, 1)
   IF(iskeydown(#1)=1)
      //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 1-ого слота
   ELSE
      IF(iskeydown(#2)=1)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 2-ого слота
      ELSE
         IF(iskeydown(#3)=1)
            //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 3-ого слота
         ELSE
            IF(iskeydown(#4)=1)
               //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 4-ого слота
            ELSE
               IF(iskeydown(#5)=1)
                  //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 5-ого слота
               ELSE
                  IF(iskeydown(#6)=1)
                     //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 6-ого слота
                  ELSE
                     IF(iskeydown(#7)=1)
                        //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 7-ого слота
                     ELSE
                        IF(iskeydown(#8)=1)
                           //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 8-ого слота
                        ELSE
                           IF(iskeydown(#9)=1)
                              //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 9-ого слота
                           ELSE
                              WAITMS(20)
                           END_IF
                        END_IF
                     END_IF
                  END_IF
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_THREAD

// здесь основной скрипт

Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Loorik on February 23, 2015, 12:32:20 AM
в кликере все переменные глобальные и доступны в любом месте скрипта - ответ "принимать в себя значения присвоенных координат" - будет.
Oraven написал все верно (один из вариантов)
если хочешь понять почему твой не работает то:
while(ISKEYDOWN (48)!1) - обязательным условием для завершения цикла является нажатие цифры "0"
if(ISKEYDOWN ($keys)=1) - $keys если ей не присвоить значение оно будет =0
SWITCH($keys) - $keys=0
      CASE(49)  - $keys не равно 49 следовательно условие не верно и выполняться не будет
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 1-ого слота
      CASE(50) - $keys не равно 50 следовательно условие не верно и выполняться не будет
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 2-ого слота
      CASE(51) - $keys не равно 51 следовательно условие не верно и выполняться не будет
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 3-ого слота
      CASE(52) - $keys не равно 52 следовательно условие не верно и выполняться не будет
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 4-ого слота
      CASE(53) - $keys не равно 53 следовательно условие не верно и выполняться не будет
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 5-ого слота
      CASE(54) - $keys не равно 54 следовательно условие не верно и выполняться не будет
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 6-ого слота
      CASE(55) - $keys не равно 55 следовательно условие не верно и выполняться не будет
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 7-ого слота
      CASE(56) - $keys не равно 56 следовательно условие не верно и выполняться не будет
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 8-ого слота
      CASE(57) - $keys не равно 57 следовательно условие не верно и выполняться не будет
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 9-ого слота
      DEFAULT
         WAITMS(10)
      END_SWITCH
   END_IF
END_CYC
в итоге этот скрипт можно только остановить нажав - "0"

чего не хватает:
1) $keys должна принимать значения от 49 по 57, удобно использовать последовательное увеличение на 1 (inc($keys)) эквивалентна записи $keys+1. Т.к значения от 0 до 47 нам не нужны  $keys=48.
2) после того как значение переменной станет $keys= 58 нужно его вернуть $keys=49, иначе оно будет дальше увеличиваться.
итог:
Code: (clickermann) [Select]
$keys=48
while(ISKEYDOWN (48)!1)
   if($keys=58)
      $keys=49
   end_if
   if(ISKEYDOWN ($keys)=1)
      SWITCH($keys)
      CASE(49)
         print(1)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 1-ого слота
      CASE(50)
         print(2)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 2-ого слота
      CASE(51)
         print(3)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 3-ого слота
      CASE(52)
         print(4)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 4-ого слота
      CASE(53)
         print(5)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 5-ого слота
      CASE(54)
         print(6)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 6-ого слота
      CASE(55)
         print(7)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 7-ого слота
      CASE(56)
         print(8)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 8-ого слота
      CASE(57)
         print(9)
         //прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 9-ого слота
      DEFAULT
         WAITMS(10)
      END_SWITCH
   else
      inc($keys)
   END_IF
END_CYC
halt


Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Oraven on February 23, 2015, 07:18:35 AM
Loorik Зачем такие навороты? Твой скрипт сложнее для понимания, особенно нуба. Серия условий с ISKEYDOWN делает тоже самое, но выглядит гораздо проще. Эта часть кода может бесконечно крутиться в отдельном потоке и в любой момент можно нажать соответствующую цифру чтобы изменить координаты.
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Loorik on February 23, 2015, 01:44:23 PM
Loorik Зачем такие навороты?
Oraven Ты абсолютно прав.
Quote from: Loorik
3) после ввода цифры (1...9) или через switch или через IF() изменить переменные координат на нужные - соответствующие введенной цифре
это просто пример на switch
Title: Re: Можно ли в сценарий вставить вызов окна с вводом чисел, чтоб кликер понимал их?
Post by: Olegreus on February 23, 2015, 07:12:52 PM
Loorik Зачем такие навороты?
Oraven Ты абсолютно прав.
Quote from: Loorik
3) после ввода цифры (1...9) или через switch или через IF() изменить переменные координат на нужные - соответствующие введенной цифре
это просто пример на switch
Все очень понятно в обоих примерах. Спасибо за помощь. Осталось только научить бота доходить по карте самостоятельно до заданного координатами моба и бот готов. К сожалению в этом мои познания почти нулевые. Есть поле 23х12 клеток, каждая по 37х37 пикселей. как можно научить бота идти к мобу кратчайшим путем обходя елки и прочие препятствия? ( карта полностью статична, персонаж имеет 4 отображения:вид спереди,сзади,слева,справа. Мобы анимированы, но стоят в своих клетках и не двигаются по карте)