Author Topic: Разбор ошибок и недочётов (Полезно для начинающих)  (Read 16282 times)

0 Members and 1 Guest are viewing this topic.

СлавьЯнИнъ

  • Активный участник
  • ***
  • Posts: 179
    • View Profile
Заметьте! Три пункта:
1. Словами опишите, что конкретно хотите зделать с помощью скрипта.
2. Выпишите чёткую последовательность простых действий мышью и клавой, которая приведёт к нужному результату.
3. Замените каждый элемент вашей последовательности на операторы программы. Переведите ваш язык на язык кликера.

Когда бы вы описали их по порядку было бы проще вас понять и помочь. А переход сразу к третьему пункту заставляет применять навыки мета-дизассемблирования, что требует больших затрат, ибо читать мысли люди разучились.  :D
добрый смех равняет всех

Полуночник

  • Активный участник
  • ***
  • Posts: 157
  • Умный не пошлёт на... он скажет -вы далеко пойдёте
    • View Profile
ясно. из пустого в порожнее. можно удалять тему

Сергей

  • Активный участник
  • ***
  • Posts: 159
    • View Profile
Ну вот например ожидание для хрома:
Code: [Select]
SUB(WAIT_UNTIL_LOAD)     
   $break = 0           
   WHILE($break = 0) 
      WAITMS(100)
      GETSCREEN
      COLORMODE(7)
      IF(PXL(69, 41) = 8355711)//Кнопка перезагрузки в хроме.
         $break = 1
      END_IF
   END_CYC
END_SUB

LCLICK(0,900)//Браузер в фокус
KEYPRESS(#F5)//Перезагружаем страницу

GOSUB(WAIT_UNTIL_LOAD)//Вызываем подпрограмму ожидания загрузки

print("loaded")//Сработает когда страница будет загружена
halt // for single run
Отсутствую.

Полуночник

  • Активный участник
  • ***
  • Posts: 157
  • Умный не пошлёт на... он скажет -вы далеко пойдёте
    • View Profile
Спасибо Сергей. Теперь намного яснее стала задача) Будем пытаться применить на практике. Кстати, не могли бы поподробней обьяснить про переменные? Вы уже давали пример, но я в нём ничего не понял. В моём скрипте(или макросе, как правильнее?) я каждый раз ввожу цвет который нужен. Пытался обьявить переменную, но тогда цвет не находит(((
« Last Edit: October 29, 2012, 06:28:54 PM by prapor »

ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
LCLICK(0,900)//Браузер в фокус
Сергей!)
Поясните, что имеется ввиду под  комментарием " //Браузер в фокус"?
« Last Edit: November 03, 2012, 06:52:56 PM by ЦИТРИН »
Бабочки полёт будит тихую поляну в солнечном свету...

Полуночник

  • Активный участник
  • ***
  • Posts: 157
  • Умный не пошлёт на... он скажет -вы далеко пойдёте
    • View Profile
как автоформат сделать не знаю
Редактирую в 4.5 версии, там нет автоформата) запустил 4.7 -увидел.

Сергей

  • Активный участник
  • ***
  • Posts: 159
    • View Profile
ЦИТРИН, переключение на окно браузера.
Кстати, хром разумеется на полный экран.

prapor, возможно в синтаксисе ошибка.
Отсутствую.

Полуночник

  • Активный участник
  • ***
  • Posts: 157
  • Умный не пошлёт на... он скажет -вы далеко пойдёте
    • View Profile
После обьяснений как и чего работает в кликере переделал свой скрипт:
Code: [Select]
//Гнев Богов
// Чистка почты и продажа лута в магазине



$x = 728       
$y = 375       
$x2 = 695     
$y2 = 284     
$c1 = 4079426
$c2 = 592154
$c3 = 1399552
$x3 = 490       
$x4 = 580       
$y3 = 262       
$y4 = 268     

mag1:
LCLICK(863,81)
GOSUB(WAIT_MA)
sl1:
getscreen
if_pixel_in($x3, $y3, $x4, $y4, $c1, $c2, $c3)
   LCLICK($x2,$y2)
   WAITMS(RND(300,500))
   LCLICK($x,$y)
   GOSUB(WAIT_MA)
   GOTO(sl1)
end_if
sl2:
getscreen
if_pixel_in($x3, $y3+50, $x4, $y4+50, $c1, $c2, $c3)
   LCLICK($x2,$y2+50)
   WAITMS(RND(300,500))
   LCLICK($x,$y)
   GOSUB(WAIT_MA)
   GOTO(sl2)
end_if
sl3:
getscreen
if_pixel_in($x3, $y3+100, $x4, $y4+100, $c1, $c2, $c3)
   LCLICK($x2,$y2+100)
   WAITMS(RND(300,500))
   LCLICK($x,$y)
   GOSUB(WAIT_MA)
   GOTO(sl3)
end_if
sl4:
getscreen
if_pixel_in($x3, $y3+150, $x4, $y4+150, $c1, $c2, $c3)
   LCLICK($x2,$y2+150)
   WAITMS(RND(300,500))
   LCLICK($x,$y)
   GOSUB(WAIT_MA)
   GOTO(sl4)
end_if
sl5:
getscreen
if_pixel_in($x3, $y3+200, $x4, $y4+200, $c1, $c2, $c3)
   LCLICK($x2,$y2+200)
   WAITMS(RND(300,500))
   LCLICK($x,$y)
   GOSUB(WAIT_MA)
   GOTO(sl5)
end_if
sl6:
getscreen
if_pixel_in($x3, $y3+250, $x4, $y4+250, $c1, $c2, $c3)
   LCLICK($x2,$y2+250)
   WAITMS(RND(300,500))
   LCLICK($x,$y)
   GOSUB(WAIT_MA)
   GOTO(sl6)
end_if
sl7:
getscreen
if_pixel_in($x3, $y3+300, $x4, $y4+300, $c1, $c2, $c3)
   LCLICK($x2,$y2+300)
   WAITMS(RND(300,500))
   LCLICK($x,$y)
   GOSUB(WAIT_MA)
   GOTO(sl7)
end_if
TRAYSAY ("на почту")   // сделал просто что бы видеть что что то происходит. работаю в оконном режиме. сам в это время занимаюсь другими делами.

ht1:
getscreen
if_pixel_in($x3, $y3+300, $x4, $y4+300, 11438, 9437313, 9456128)
   TRAYSAY("всё забито")
   SOUND("pause.wav")
   HALT
end_if
LCLICK(929,81)   
WAIT(RND(12,14))

po:
GETSCREEN
if_pixel_in(883, 301, 892, 306, 11982062)     
   goto(ch)
else
   TRAYSAY("писем нет")
   goto(F)
end_if

ch:
LCLICK(968,305)   
WAITMS(4500)
LCLICK(911,558)   
WAITMS(110)
LCLICK(911,558)
WAITMS(RND(600,1000))
LCLICK(729,377)       
GOSUB (WAIT_PO)
LCLICK(916,308)       
WAITMS(RND(600,1000))
LCLICK(1063,535)       
WAITMS(RND(1000,2000))
LCLICK(738,494)       
GOSUB (WAIT_PO)
GETSCREEN
//Проверка в трёх местах ячеек рюкзака в почте.
IF_PICTURE_IN(445,320,710,532, "1.bmp")               
   goto(po)
end_if
GETSCREEN
IF_PICTURE_IN(445,320,710,532, "2.bmp")             
   goto(po)
end_if
GETSCREEN
IF_PICTURE_IN(445,320,710,532, "3.bmp")             
   goto(po)
else
   TRAYSAY("мест нет, продаю")
   goto(mag1)
END_IF

F:
LCLICK(863,81)   
GOSUB(WAIT_MA)
GETSCREEN
IF_PICTURE_IN(419,546,468,598, "4.bmp")
   goto(mag1)
end_if
HALT

//задержки на обновление страницы
SUB(WAIT_MA)
   $break = 0
   WHILE($break = 0)
      WAIT(4)
      GETSCREEN
      IF(PXL(722, 287) = 1919430)   
         $break = 1
      END_IF
   END_CYC
END_SUB

SUB(WAIT_PO)
   $break = 0
   WHILE($break = 0)
      WAIT(4)
      GETSCREEN
      IF(PXL(841, 375) = 4078899)
         $break = 1
      END_IF
   END_CYC
END_SUB
Что можете посоветовать изменить? И если есть что переделать, то как?
В частности у меня вопрос по проверке в трёх местах ячеек рюкзака в почте. Пока реализовал так но!
 Там всего 20 ячеек. Сделал один снимок и по нему сделал сравнение. Оказалось что во всех ячейках рисунок разный, хоть и не заметно глазу. Пытался сделать с колормод, но всё равно сравнение подходит только к той ячейке кот скриншотил. Может я чего не то делал.... Вот как реализовать поиск пустых ячеек, без сравнения с картинкой? Сделал скрины на всякий... ячейки могут разные заняты быть.
« Last Edit: October 30, 2012, 03:49:53 AM by prapor »

Сергей

  • Активный участник
  • ***
  • Posts: 159
    • View Profile
Ну тут только если css'ом попробовать какие-то метки ставить.
Отсутствую.

Полуночник

  • Активный участник
  • ***
  • Posts: 157
  • Умный не пошлёт на... он скажет -вы далеко пойдёте
    • View Profile
Сделал таки сравнение картинки с колормодом и теперь сравнение только один раз происходит

СлавьЯнИнъ

  • Активный участник
  • ***
  • Posts: 179
    • View Profile
Мне пока не ясно для чего ты сравниваешь рисунок, Прапор.
Если бы мне надо было проверять все эти двадцать ячеек по очереди, я бы сделал цикл с изменением координат проверки после каждого прохода. Ты хочешь, чтобы тебе сценарий кликерный написали, да ещё 100% работающий. Вот только я в эту игру не играю. А без реальных условий работать со скриншотами это малоэффективно.
добрый смех равняет всех

Полуночник

  • Активный участник
  • ***
  • Posts: 157
  • Умный не пошлёт на... он скажет -вы далеко пойдёте
    • View Profile
Та ниии..))) я не прошу мне написать сценарий)) я прошу ОБЬЯСНИТЬ какие ошибки совершаю и КАК лучше их исправить)))

Ляпис

  • Освоившийся
  • **
  • Posts: 35
    • View Profile
Если при наведении на ячейку меняется курсор мыши (например со стрелочки на кисть руки или крестик), можно по нему сделать определение:

Code: [Select]
move($x,$y)
if(pxlxor($x,$y,$x+5,$y+5) = $hash-cross)
lclick($x,$y) //продаём
end_if


cmann4.7 se win8 slimbrowser intel core2duo
текущий проект - "Зомби Ферма" VK

Полуночник

  • Активный участник
  • ***
  • Posts: 157
  • Умный не пошлёт на... он скажет -вы далеко пойдёте
    • View Profile
Что то мозги не соображают... Что я не правильно сделал? Почему цикл завершается и переходит к клику если находит и цвета и картинку?
Code: [Select]
$break = 0
WHILE($break = 0)
   getscreen
   if_pixel_in(800,230,1300,600, 7919672, 16777215, 16750899)
      $x2 = $_return1
      $y2 = $_return2
   else
      $break = 1
   end_if
   getscreen
   COLORMODE(6)
   IF_PICTURE_IN($x2-440,$y2+18,$x2-175,$y2+230, "1.bmp")
   else
      $break = 1
   END_IF
END_CYC
LCLICK(863,81)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Значит не находит. Чтобы точно убедиться как работает условие вставь внутрь него запись в лог.