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

Основной раздел => Общие вопросы => Topic started by: lahesis333 on November 24, 2019, 09:15:01 PM

Title: Запись "сложного" скрипта.
Post by: lahesis333 on November 24, 2019, 09:15:01 PM
И снова здравствуйте. На сегодня задача такая.
Есть 10 аккаунтов в ВК. Все они играют в одну и ту же игру. Каждый день требуется выполнять одни и те же действия на каждом аккаунте.
Судя по предыдущей теме, как я понял, можно создать скрипт выполняющий следующее: есть стартовое окно игры. Есть нужная кнопка(картинка) с которой все начинается(каждый день "запуск дня прохождения игры") и на которую нужно нажать. Мы нажимаем на эту кнопку(картинку) и скрипт ждет пока не появится следующая, нужная нам. И так далее: выполнили действие с предыдущей кнопкой(картинкой), скрипт ждет когда появится следующая нужная нам. То есть запись скрипта выполнена не по конкретному таймингу нажатия кнопок(картинок)а именно при появлении нужной кнопки(картинки) в данный момент времени.
Проблема в том, что на каждом аккаунте разная прокачка уровня персонажа и, соответственно, нужно разное время на прохождение заданий. То есть на первом аккаунте задание может выполняться 20 секунд а, к примеру, на пятом все 30(на восьмом аккаунте 15 и тд.).
Также при открытии сразу нескольких окон браузера(шесть и более) игра может подвисать на некоторых аккаунтах(опять таки не всегда и не во всех окнах) . Поэтому даже между теми действиями, между которыми в обычном режиме(когда открыто 2-3 окна браузера) время одинаковое(кнопка-3 секунды-кнопка-4 секунды-кнопка-2 секунды-кнопка и тд.), может быть увеличение времени отклика игры. Поэтому также не получается привязаться к определенному времени между действиями.
Прикладываю фрагмент того как это выглядит в жизни. Помогите пожалуйста решить задачку! Буду очень благодарен))
Также может быть такое, что на каком то из аккаунтов нет нужных ресурсов для выполнения какого то задания и происходит "прерывание" обычного хода действий. И если мы нажимаем на кнопку выполнения задания но выполнить его не можем(то есть вместо нужной нам по плану следующей кнопки в нужном месте, появляется другая кнопка, либо не происходит ничего) мы возвращались на главный экран игры(обычно это происходит при нажатии на клавишу ESC-это как клавиша "назад" в данной игре).
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on November 24, 2019, 09:28:48 PM
Вот сама  игра https://dropmefiles.com/rinq1
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on November 29, 2019, 11:58:29 AM
Выложи видео лучше качеством и на ютуб, опиши конкретно что нужно делать. Со входом в каждый акаунт тебе показали пример в другой теме. Я сам не силен в скриптах, но по не сложным кускам скрипта могу помочь, типа найти картинку кликнуть там через столько времени и тому подобное.
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 01, 2019, 10:36:46 PM
Выложи видео лучше качеством и на ютуб, опиши конкретно что нужно делать. Со входом в каждый акаунт тебе показали пример в другой теме. Я сам не силен в скриптах, но по не сложным кускам скрипта могу помочь, типа найти картинку кликнуть там через столько времени и тому подобное.
Спасибо за подсказку! Вот понемногу стал разбираться... Но не могу задать следующее условие. Нужно чтобы найдя требуемую картинку происходило нажатие следующей нужной.Но не через четкий промежуток времени(1,2, 3 и тд секунд) а именно тогда, когда нужная картинка появится(к примеру в пределах одной минуты). И если картинка не появилась, то обновлять страницу браузера. Вот что пока удалось нарыть, но не уверен что хоть немного приблизился к истине...
Code: [Select]
$time = $_time_m + 5
WHILE($time > $_time_m)
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax,"2.bmp")
      $time > 0
WAITMS(200)
  LCLICK($_return1, $_return2)
  WAITMS(100)
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax,"1.bmp")
    $time > 0
      WAITMS(200)
   LCLICK($_return1, $_return2)
      WAITMS(100)
END_IF
  END_IF
  END_CYC
IF($time ! 0)
// время истекло, картинка не найдена
END_IF
HALT
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 02, 2019, 12:46:44 PM
Привет, поверь пока не будет чёткой логики, никто тебе не поможет, не потому что лень или не хотят а потому то никто не знает какую картинку ждать, что сделать или куда нажать. Выложи картинки обьясни на пальцах с самого начала куда нажать чего и как ждать, потом после того как дождёшься что сделать.
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 02:03:26 PM
Привет, поверь пока не будет чёткой логики, никто тебе не поможет, не потому что лень или не хотят а потому то никто не знает какую картинку ждать, что сделать или куда нажать. Выложи картинки обьясни на пальцах с самого начала куда нажать чего и как ждать, потом после того как дождёшься что сделать.
Да, я понял. Это мне кажется все очевидным))Вот подготовил как это должно выглядеть. Все начинается с основного(стартового) окна. Оно запускается в 100% случаях при загрузке игры(скрин 1). Его нужно закрыть нажав на значок закрытия. После этого может появиться(но может и не появиться) похожая, которую так же нужно закрыть(скрин2) и попасть в итоге не главный экран(скрин 3). На главном экране(скрин 3) нужно нажать на картинку "АРЕНА" чтобы попасть в новое окно. Но проблема в том, что человечки перемещаются по экрану и иногда могут закрывать собой часть нужной картинки(АРЕНА). После нажатия на АРЕНА(скрин 3) мы попадаем на скрин 4 где нужно нажать "НАПАСТЬ"(желательно всегда на самую правую кнопку). Затем скрин 5 "В БОЙ". Затем идет окно загрузки боя. И вот этот период может быть всегда разным. Иногда между скрином 5 и скрином 7 проходит около 3 секунд, а иногда и порядка 15-20. После того как все загрузилось видим скрин 7. На нем нужно нажать на зеленый значок вверху справа и появится новое окно(скрин 8) где нужно нажать "ПРОПУСТИТЬ". Мы снова возвращаемся в окно выбора противника(скрин 9), которое нужно закрыть (крестик справа) и после закрытия оказываемся вновь на рабочем столе.
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 02:13:02 PM
Вот сами скрины
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 02:14:51 PM
1
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 02:15:08 PM
2
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 02, 2019, 02:16:41 PM
Нет только не jpg BMP или png
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 02, 2019, 02:17:13 PM
Теперь осталось сделать 7 скринов, и собрать рабочий скрипт. Если в кликер у тебя не получается это сделать можешь, сделать по другому, как появится экран на котором нужно сделать действие, как например в начале игры скрин 1, жмёшь кнопку принтскрин на клавиатуре, открываешь пеинт родная встроенная программа виндовс, после открытия программы жмёшь сочетание клавиш контроля в. В прогу вставит я картинка, потом файл сохранить как выбираешь формат BMP и сохранить, и так все 7 скринов кидаешь сюда, дальше будет дальше😁
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 02:30:05 PM
Теперь осталось сделать 7 скринов, и собрать рабочий скрипт. Если в кликер у тебя не получается это сделать можешь, сделать по другому, как появится экран на котором нужно сделать действие, как например в начале игры скрин 1, жмёшь кнопку принтскрин на клавиатуре, открываешь пеинт родная встроенная программа виндовс, после открытия программы жмёшь сочетание клавиш контроля в. В прогу вставит я картинка, потом файл сохранить как выбираешь формат BMP и сохранить, и так все 7 скринов кидаешь сюда, дальше будет дальше😁
Да, вот они)
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 02, 2019, 02:43:00 PM
Вот это уже другое дело, надеюсь ты их не редактировал, чуть позже, сделаем тестовый скрипт, просто на работе, пока нет возможности посидеть за компом
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 02, 2019, 02:47:25 PM
А почему первый и второй крестик разного размера?
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 03:02:35 PM
А почему первый и второй крестик разного размера?
А это я пробовал изначальный скрин экрана уменьшить по размеру и пошла потеря качества)
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 03:02:55 PM
Вот это уже другое дело, надеюсь ты их не редактировал, чуть позже, сделаем тестовый скрипт, просто на работе, пока нет возможности посидеть за компом
Буду ждать с нетерпением!
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 02, 2019, 03:49:30 PM
Кусочки картинок нужно скринить строго на одном разрешении, поэтому выстави нужный масштаб, и только потом собирай кусочки картинок, иначе скрипт работать не будет.
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 05:45:46 PM
Кусочки картинок нужно скринить строго на одном разрешении, поэтому выстави нужный масштаб, и только потом собирай кусочки картинок, иначе скрипт работать не будет.
Да сделал все в одном разрешении теперь уже на домашнем компе.
ЗЫ. Или имеется ввиду чтобы был одинаковый размер? Типо если первые скрины 17х17, то и остальные должны быть такими же?
Title: Re: Запись "сложного" скрипта.
Post by: Космич on December 02, 2019, 06:29:46 PM
А что там с окнами? тебе нужно что бы он последовательно запускал и закрывал по одному окну за раз? или что бы он постоянно работал переключаясь между запущенными окнами?
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 06:31:32 PM
А что там с окнами? тебе нужно что бы он последовательно запускал и закрывал по одному окну за раз? или что бы он постоянно работал переключаясь между запущенными окнами?
Чтобы закрывал окна по одному разу в последовательности от скрина 1 до скрина 10.
Title: Re: Запись "сложного" скрипта.
Post by: Космич on December 02, 2019, 07:15:53 PM
Ты с профилями разобрался же?

Code: (clickermann) [Select]
#DEFINE WM_SYSCOMMAND: 0x0112 
#DEFINE SC_CLOSE:      0xF060

EXECUTE("firefox.exe", STRCONCAT("-P vk_user_data_", $counter, " -new-window https://vk.com/app5327745_569506422")) // открываем игру под профилем от 0 до 10 в мозилле
$hwnd = 0
WHILE($hwnd = 0)
   $hwnd = WNDFIND("Хроники Хаоса - Mozilla Firefox")
END_CYC
WNDSETINFO($hwnd, 0, 0, 1280, 800) // устанавливаем позицию и размер окна

WAIT(2) // Тут ожидание загрузки игры и какие то действия
SENDMESSAGE($hwnd, WM_SYSCOMMAND, SC_CLOSE, 0) // закрываем окно

$counter = $counter + 1 // инкрементируем переменную счётчик аккаунтов
IF($counter > 10) // Если счётчик больше 10, то стоп
   HALT
END_IF
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 07:30:10 PM
Да, все работает. Но пришлось сократить кол-во открытых окон браузера до двух-трех т.к. после обновы в игре браузер может жрать аж до 6-7ГБ! оперативы...
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 07:33:29 PM
А что там с окнами? тебе нужно что бы он последовательно запускал и закрывал по одному окну за раз? или что бы он постоянно работал переключаясь между запущенными окнами?
Окна имеются ввиду те же которые в игре? А то может мы о разных окнах говорим)) Просто скрипт заточен именно под окна браузера) А я думал что про окна диалоговые что в игре выскакивают когда нажимаешь на ту или иную кнопку ;D
Title: Re: Запись "сложного" скрипта.
Post by: Космич on December 02, 2019, 07:42:39 PM
это всё предстоит написать с 10-11 строки
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 02, 2019, 08:47:28 PM
Запустил игру, пришлось обучение пройти ;D, До конца не смог сделать, там арена лимитирована 5 проходов всего в день, так что держи не полный скрипт, остальное завтра. Кстати если кто может первые 2 цикла обьеденить в один было бы норм, у меня что то не получилось придумать как. Там такое условие, запуск игры появляется окно с крестиком, первое всегда, второе может быть а может и нет, 5 сек хватает что бы 2 окна поймать, надо проверить первое и закрыть потом в течении 5 сек чекать второе, если есть закрыть, если нет пойти дальше.
Code: (clickermann) [Select]
#name "Хроники хаоса"

// Проверяем первый крестик если нету через 10 сек идем дальше
$time = $_time_t + 10 // таймер на 10 секунд
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF

// Проверяем второй крестик если нету через 5 сек идем дальше
$time = $_time_t + 5 // таймер на 5 секунд
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
WAITMS(800)

// Ищим арену
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Арена.bmp", -1, 90)
   LCLICK($_return1 + 15, $_return2 + 15) // Клик по арена
   WAITMS(1500)
   LCLICK($_return1, $_return2 + 145) // Клик по напасть
   WAITMS(1500)
   LCLICK($_return1 + 280, $_return2 + 205) // Клик по в бой
   WAITMS(1200)
END_IF


HALT
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 02, 2019, 09:26:10 PM
Вот тебе скрипт, пробуй тестируй, если что то не понравится пиши, поправим настроим.
Code: (clickermann) [Select]
#name "Хроники хаоса"

// Проверяем первый крестик если нету через 10 сек идем дальше
$time = $_time_t + 10 // таймер на 10 секунд
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF

// Проверяем второй крестик если нету через 5 сек идем дальше
$time = $_time_t + 5 // таймер на 5 секунд
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
WAITMS(800)

// Ищим арену
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Арена.bmp", -1, 90)
   LCLICK($_return1 + 15, $_return2 + 15) // Клик по арена
   WAITMS(1500)
   LCLICK($_return1, $_return2 + 145) // Клик по напасть
   WAITMS(1500)
   LCLICK($_return1 + 280, $_return2 + 205) // Клик по в бой
   WAITMS(1200)
END_IF

// Ожидаем появления паузы
$check = 0
WHILE($check = 0)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Пауза.bmp", -1, 90)
      LCLICK($_return1 + 10, $_return2 + 10) // Клик по пауза
      WAITMS(500)
      LCLICK($_return1 - 460, $_return2 + 340) // Клик по пропустить
      $check = 1
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

HALT
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 02, 2019, 09:31:48 PM
Забыл сказать скачай 3 картинки во вложении, и положи рядом со скриптом
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 10:00:43 PM
Забыл сказать скачай 3 картинки во вложении, и положи рядом со скриптом
Вай красота!)))А можно вопрос? Как ты добился нажатия на кнопку "НАПАСТЬ" и "В БОЙ" без применения части картинки?Я так понимаю  "LCLICK($_return1, $_return2 + 145) // Клик по напасть" +145 и "LCLICK($_return1 + 280, $_return2 + 205) // Клик по в бой" +280,+205 это какое то смещение курсора которое направляет его в нужную точку?Если мне например нужно нажать не на самую правую "НАПАСТЬ" а на среднюю?
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 10:02:01 PM
Просто я хочу попробовать дальше развить скрипт т.к. арена это только процентов 5 от того что нужно делать в игре ежедневно и мне хочется понять хотя бы приблизительную логику ::)
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 02, 2019, 10:10:13 PM
Если на середину там разница 200 пикселей, нужно по оси х отнять 200 пикселей
Code: (clickermann) [Select]
LCLICK($_return1 - 200, $_return2 + 145) // Клик по напасть (средняя кнопка)
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 02, 2019, 11:36:10 PM
Если на середину там разница 200 пикселей, нужно по оси х отнять 200 пикселей
Code: (clickermann) [Select]
LCLICK($_return1 - 200, $_return2 + 145) // Клик по напасть (средняя кнопка)
Не могу понять как заставить скрипт работать на закрытие диалогового окна в миссиях. При запуске он как положено ждет прохождения миссии и после того как миссия пройдена и появляется кнопка продолжить жмет пропустить. Все ок. Но вот не нажимает после этого на кнопку закрыть. Хотя я поставил смещение курсора как положено.
Code: [Select]
// Ожидаем появления продолжить
$check = 0
WHILE($check = 0)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "продолжить.bmp", -1, 60)
      LCLICK($_return1 + 10, $_return2 + 10) // Клик по продолжить
      WAITMS(500)
      LCLICK($_return1 - 5, $_return2 + 5) // Клик по пропустить
      WAITMS(500)
      LCLICK($_return1 + 360, $_return2 - 510) // Клик по закрыть
      $check = 1
   ELSE
      WAITMS(50)
   END_IF
END_CYC
 
HALT
И почему то при параметрах картинки -1,70 или больше(80,90) он на нее не нажимает. Я так понял что вторая цифра отвечает за процент совпадения пикселей в игре и картинки? и чем меньше значение тем дольше он ее анализирует? Просто при выскакивании картинки "Продолжить" в игре, нажатие на нее происходить лишь спустя секунды 3-4 а то и все 5.
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 03, 2019, 12:08:40 PM
Там такое условие, запуск игры появляется окно с крестиком, первое всегда, второе может быть а может и нет, 5 сек хватает что бы 2 окна поймать, надо проверить первое и закрыть потом в течении 5 сек чекать второе, если есть закрыть, если нет пойти дальше.
Так можно это проверять? Вроде работает, но не уверен что сделал правильно.
Code: (clickermann) [Select]
$check = 2
$time = $_time_t + 8 // таймер на 8 секунд
WHILE($time > $_time_t) | ($check > 0)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
      INC($check,-1)
      LCLICK($_return1 + 10, $_return2 + 10)
      WAITMS(1500)
   ELSE
      WAITMS(1500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 03, 2019, 12:11:05 PM
Проверяй такой вариант
Code: (clickermann) [Select]
#name "Хроники хаоса"

// Проверяем и закрываем рекламу
$check = 2
$time = $_time_t + 8 // таймер на 8 секунд
WHILE($time > $_time_t) | ($check > 0)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
      INC($check,-1)
      LCLICK($_return1 + 10, $_return2 + 10)
      WAITMS(1500)
   ELSE
      WAITMS(1500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
WAITMS(800)

// Ищим арену
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Арена.bmp", -1, 90)
   LCLICK($_return1 + 15, $_return2 + 15) // Клик по арена
   WAITMS(1500)
   LCLICK($_return1, $_return2 + 145) // Клик по напасть
   WAITMS(1500)
   LCLICK($_return1 + 280, $_return2 + 205) // Клик по в бой
   WAITMS(1200)
END_IF

// Ожидаем появления паузы
$check = 0
WHILE($check = 0)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Пауза.bmp", -1, 90)
      LCLICK($_return1 + 10, $_return2 + 10) // Клик по пауза
      WAITMS(500)
      LCLICK($_return1 - 460, $_return2 + 340) // Клик по пропустить
      $check = 1
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

HALT // Удали это если надо что бы скрипт работал без остановки
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 03, 2019, 12:14:08 PM
Подскажите пожалуйста, как вы высчитываете нужные координаты куда кликнуть после нахождения нужной картинки? на этом примере:
Code: [Select]
// Ожидаем появления паузы
$check = 0
WHILE($check = 0)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Пауза.bmp", -1, 90)
      LCLICK($_return1 + 10, $_return2 + 10) // Клик по пауза
      WAITMS(500)
      LCLICK($_return1 - 460, $_return2 + 340) // Клик по пропустить
      WAITMS(1500)
      LCLICK($_return1 - 32, $_return2 + 44) // Клик по закрыть
      $check = 1
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
"Пауза.bmp", -1, 90 - Это нахождение части картинки(что такое -1,90?пытался понять через справку, но еще больше запутался)
LCLICK($_return1 + 10, $_return2 + 10) // Клик по пауза - Это клик непосредственно по нашедшейся картинке(почему стоит смещение +10 и +10?или это не смещение?)
LCLICK($_return1 - 460, $_return2 + 340) // Клик по пропустить - Это клик по кнопке пропустить. -460 и +340 смещение относительно какой точки? И можно ли быстро узнать на сколько идет смещение до нужно точки нажатия? А то вчера полвечера просидел с калькулятором считал куда нажать ;D
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 03, 2019, 12:35:17 PM
Это из справки кликермена
IF_PICTURE_IN ... END_IF

Производит поиск изображения в прямоугольной области буфера анализа.

Синтаксис

IF_PICTURE_IN (x, y, x2, y2, file, [bgcolor], [currency] )
...
END_IF



Параметры
x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска
file - bmp файл, поиск которого будет осуществляться
bgcolor - необязательный параметр; игнорируемый цвет фона входного изображения
currency - необязательный параметр; точность поиска в процентах (1..100)



Возвращаемые параметры
$_return1 - x координата найденного изображения
$_return2 - y координата -//-



Пример
Code: (clickermann) [Select]
getscreen

IF_PICTURE_IN (10,20, 300, 300, "somefile.bmp")
 move($_return1, $_return2)
END_IF

Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 03, 2019, 12:53:45 PM
После поиска картинки, переменные примут значения координат, найденной картинки (левый верх куска картинки) и дальнейшие расчеты надо делать относительно этих координат. например картинка, которую мы ищем, находится в координатах 10 10 переменные  $_return1 и $_return2 присвоили значение 10 10, что бы попасть по картинке, желательно прибавить к ним пару пикселей получится ($_return1 + 5, $_return2 + 5) теперь нам надо кликнуть ниже и правее от найденной картинки на 10 по х и на 20 по у, мы помним что $_return1 и $_return2 = х10 у10 значит надо прибавить получится ($_return1 + 10, $_return2 + 20) и скажем нужно еще кликнуть левее на 20 и ниже на 30 получится ($_return1 - 20, $_return2 + 30). что бы узнать координаты искомой картинки, можно после поиска картинки, прописать запись в лог такую строчку
Code: (clickermann) [Select]
GETSCREEN
 IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
  LOGWRITE ($_return1, " х ", $_return2)
END_IF
или такую
Code: (clickermann) [Select]
GETSCREEN
 IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
  MOVE($_return1, $_return2) // Курсор прыгнет на эти координаты, потом можно запомнить их или нахать Alt+Q они запишутся в открытом редакторе кликермана
END_IF
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 03, 2019, 12:59:50 PM
Quote
И можно ли быстро узнать на сколько идет смещение до нужно точки нажатия? А то вчера полвечера просидел с калькулятором считал куда нажать ;D
Есть проги которые все это высчитывают, я привык сам с добрым калюкулятором, нахожу координаты картинки потом от них отнимаю те в которые надо нажать после поиска, если значение положительное тогда прибавляешь к $_return если отрицательно то отнимаешь все просто
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 03, 2019, 01:26:30 PM
Да и еще, учти такой момент, когда ты найдешь картинку переменные $_return запомнят координаты картинки 1 и все расчеты производишь относительно этих координат, но когда ты запустишь поиск второй картинки или пикселя,в переменные $_return запишутся уже координаты картинки 2.
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 03, 2019, 08:54:29 PM
Да и еще, учти такой момент, когда ты найдешь картинку переменные $_return запомнят координаты картинки 1 и все расчеты производишь относительно этих координат, но когда ты запустишь поиск второй картинки или пикселя,в переменные $_return запишутся уже координаты картинки 2.
Я не совсем понял как пользоваться логом для поиска координаты искомой картинки...В лог то прописал команду чтобы курсор прыгнул на картинку но не знаю как применить чтобы все работало...
И еще вопрос. Как сделать условие:если картинка найдена, то мы нажимаем на нее. а если не найдена то нажимаем на другую(или ESC)?
И как бы сделать так, чтобы при нажатии на картинку, если она снова появляется в том же месте, на нее нажималось именно столько раз, сколько она будет появляться?
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 04, 2019, 11:54:58 AM
Не совсем понятно, что ты не понял, вроде я довольно понятно все написал.
По поводу если не найдена картинка:
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100) // Если найдено
   LCLICK($_return1, $_return2) // Клик по картинке
   WAITMS(100)
ELSE  // Если не найдено
   WAITMS(300)
   KEYPRESS(#ESC) // Жмем ESC
   WAITMS(50)
END_IF
Quote
И как бы сделать так, чтобы при нажатии на картинку, если она снова появляется в том же месте, на нее нажималось именно столько раз, сколько она будет появляться?
Напиши прямо куда нажимать? Ты про подарки от друзей? Добавь меня в скайп ggk-vova, вечером если не буду занят, пообщаемся, и попробуем собрать то что тебе нужно.
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 04, 2019, 07:25:26 PM
Напиши прямо куда нажимать? Ты про подарки от друзей? Добавь меня в скайп ggk-vova, вечером если не буду занят, пообщаемся, и попробуем собрать то что тебе нужно.
Когда заходишь в ежедневные задания, то там есть кнопки завершить(когда выполнил арену и миссии и тд). Там может быть 3,4,5,6 и тд картинок завершить. Когда на нее нажимаешь, она пропадает и на ее месте появляется следующая(если еще есть такие). Нужно чтобы нажималось на одинаковую картинку ЗАВЕРШИТЬ, пока она будет появляться. Как только они закончатся то начать ESC. У меня идея только продублировать несколько раз поиск этой картинки. И везде вставить ELSE с нажатием ESC. Но скрипт и так большой получается а тут еще и 6-7 штук одного и того же. Может можно как то более грамотно организовать?
А также вопрос по мигающей кнопке. Есть мигание, но оно каждый день в другом место. Цвет один и тот же. Нужно найти пиксель(и) в произвольной точке и нажать. Пробовал скринить в тот момент когда появляется "свечение" кнопки, но не находит...
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 04, 2019, 09:01:24 PM
Пробуй так
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Завершить.bmp", -1, 95)
      LCLICK($_return1, $_return2)
      WAITMS(500)
      MOVE($_return1 - 50, $_return2)
   ELSE
      KEYPRESS(#ESC)
      $check = 1
      WAITMS(150)
   END_IF
END_CYC
Quote
А также вопрос по мигающей кнопке.
А ее надо увидеть что бы понять что с ней делать
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 05, 2019, 11:26:00 AM
А ее надо увидеть что бы понять что с ней делать
Вот она. Она постоянно мерцает от менее желтой рамки к более желтой. Нужно нажимать на саму картинку в центре.
Title: Re: Запись "сложного" скрипта.
Post by: Ramzesia on December 05, 2019, 12:48:36 PM
Целиком окно заскринь, и как ты скрины делаешь?
Если через пеинт то при сохранении выбери BMP формат
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 05, 2019, 01:15:22 PM
Целиком окно заскринь, и как ты скрины делаешь?
Если через пеинт то при сохранении выбери BMP формат
Это я чисто для форума быстро скриню с работы. У нас тут плагин установлен и он сразу сохраняет автоматом.
Вот все окно
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 05, 2019, 02:00:56 PM
Вот что имеем на данный момент. Отрабатывается открытие окна браузера с последующим запуском игры и зыкрытием стартовых диалоговых окон. Плюс реализован сбор ежедневных заданий.
Code: (clickermann) [Select]
#DEFINE WM_SYSCOMMAND: 0x0112 
#DEFINE SC_CLOSE:      0xF060

#DEFINE PROFILE_NAME: "vk_user_data_"
#DEFINE GAME_TITLE:   "Хроники Хаоса"
#DEFINE GAME_LINK:    "https://vk.com/app5327745_569506422"

#DEFINE WINDOW_POS:  0, 0   
#DEFINE WINDOW_SIZE: 1280, 840 
#DEFINE GAME_CLIENT_POS:  200, 180   
#DEFINE GAME_CLIENT_SIZE: WINDOW_SIZE

#INCLUDE "data\includes\mySub.cms"

FOR($counter, $counter < 10)
   EXECUTE("palemoon.exe", STRCONCAT("-P ", PROFILE_NAME, $counter, " -new-window ", GAME_LINK))
   $hwnd = #FALSE
   WHILE($hwnd = #FALSE)
      $hwnd = WNDFIND(GAME_TITLE)
   END_CYC
   WNDSETINFO($hwnd, WINDOW_POS, WINDOW_SIZE)   

GAME_LOADING()        // Ожидание загрузки игры
SKIP_OFFER()          // Пропускаем рекламу
   OPEN_DAILY_MISSIONS() // Открываем ежедневные миссии
   COMPLETE()            // Завершение миссиий
   
   SENDMESSAGE($hwnd, WM_SYSCOMMAND, SC_CLOSE, 0)
   WHILE(STRLEN(HGETTEXT($hwnd)))
      WAITMS(25)
   END_CYC
   HALT
END_CYC

Code: (clickermann) [Select]
SUB(SKIP_OFFER)
   $time = $_time_t + 5
   WHILE($time > $_time_t)
      GETSCREEN
      COLORMODE(8)
      IF_PICTURE_IN (GAME_CLIENT_POS, GAME_CLIENT_SIZE, "data\pictures\OFFER_CLOSE.bmp", -1, 100)
         PRINT("offer_close found")
         LCLICK($_return1 + 5 + RND(-2,2), $_return2 + 5 + RND(-2,2))
         WAITMS(2500)
         $time = $_time_t + 5
      END_IF
   END_CYC
END_SUB

SUB(OPEN_DAILY_MISSIONS)
   STRSEPARATE("daily_missions.bmp;daily_missions_open.bmp", ";", $arr_temp)
   $state = 0
   WHILE($state < 2)
      GETSCREEN     (GAME_CLIENT_POS, GAME_CLIENT_SIZE)
      COLORMODE  (8, GAME_CLIENT_POS, GAME_CLIENT_SIZE)
      IF_PICTURE_IN (GAME_CLIENT_POS, GAME_CLIENT_SIZE, STRCONCAT("data\pictures\", $arr_temp[$state]), -1, 100)
         PRINT($arr_temp[$state], " found")
         IF($state = 0)
            LCLICK($_return1 + 40 + RND(-5,5), $_return2 + 20 + RND(-5,5))
            WAITMS(1500)
         END_IF
         $state = $state + 1
      ELSE
         PRINT($arr_temp[$state], " not found")
      END_IF
   END_CYC
END_SUB

SUB(COMPLETE)
   $check = #FALSE
   WHILE($check = #FALSE)
      GETSCREEN
      COLORMODE(8)
      IF_PICTURE_IN(GAME_CLIENT_POS, GAME_CLIENT_SIZE, "data\pictures\complete.bmp", -1, 100)
         PRINT("complete found")
         LCLICK($_return1 + 40 + RND(-5,5), $_return2 + 8 + RND(-5,5))
         WAITMS(1500)
      ELSE
         PRINT("complete not found")
         $check = #TRUE
      END_IF
   END_CYC
END_SUB

SUB(GAME_LOADING)
   $game_loading = #FALSE
   WHILE($game_loading = #FALSE)
      GETSCREEN               (GAME_CLIENT_POS, GAME_CLIENT_SIZE)
      $game_loading = PXLCOUNT(GAME_CLIENT_POS, GAME_CLIENT_SIZE, 6225919)
      WAITMS(25)
   END_CYC
END_SUB
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 05, 2019, 02:27:42 PM
Можно ли сделать в кликере такие чудеса:
Запускаем скрипт. Он открывает первый профиль браузера(всего их допустим 10) и сразу заходит в ВК.
В ВК заходит в определенную группу-ищет на странице нужную картинку(подарки в игре)-если находит нажимает по ней и сразу запускается игра-как только игра прогрузилась до определенного момента(окно рекламы) игра закрывается.
Мы вновь заходим в ту же группу и прокручиваем страницу до тех пор, пока не появится опять такая же картинка(картинки одинаковые. обычно два раза в день появляются утром и вечером. но проблема в том, что первая картинка, на которую мы нажали ранее, никуда не пропадает а так и остается в группе т.к. это пост).
После нажатия на вторую картинку мы опять ждем пока игра не прогрузится до окна рекламы и после этого закрывает браузер.
И сразу же после закрытия первого профиля открывался второй(потом когда закроется второй, третий и тд) с аналогичными действиями в группе ВК.
Выше выложил скрипт, которые открывает профиль браузера с последующим запуском игры и закрытием окна браузера после выполнения всех необходимых действий(спасибо большое за написание пользователю Космич! :D)
Title: Re: Запись "сложного" скрипта.
Post by: Космич on December 05, 2019, 03:30:40 PM
тут надо думать над парсером страницы группы за определённое время
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 05, 2019, 05:49:59 PM
тут надо думать над парсером страницы группы за определённое время
А можно языком для таких как я?)Или это не мне сообщение? :-X
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 06, 2019, 10:14:09 AM
А можно языком для таких как я?)
(https://99px.ru/sstorage/86/2018/09/image_862909181827114104596.gif)
Ну, так все сразу понятно! А главное, сразу приблизились к решению вопроса!
Title: Re: Запись "сложного" скрипта.
Post by: lahesis333 on December 06, 2019, 12:46:30 PM
чтоб, сразу приблизились к решению вопроса, не буду раздражать вас дополнительными вопросами, необходимыми для написания кода, а корректно и точно отвечу на тот единственный, который вы смогли здесь сформулировать: ДА, МОЖНО.
Вы как всегда оригинальны в своих ответах! Но вам не кажется, что люди, которые обращаются за помощью на данном форуме(в большинстве или в меньшинстве, неважно) не всегда понимают какую именно информацию они должны предоставить ВАМ(помогающим) для решения того или иного вопроса? Есть вопрос "Можно ли ...." и есть ваш ответ "Да можно...". Моя ошибка в том, что я некорректно задал вопрос и не знаю какую информацию, кроме того как это должно выглядеть, предоставить. Но вместо того, чтобы хоть как то помочь(да вы не обязаны) и направить в нужное русло(даже в таком элементарном деле, как выражение МОИХ хотелок и мыслей), вы применяете не совсем уместный сарказм.
ЗЫ.Прошу прощения за разведенную в теме полемику!
Title: Re: Запись "сложного" скрипта.
Post by: Космич on December 06, 2019, 08:14:18 PM
Проверь вот это. Должен появится файл с html кодом страницы группы
Code: (clickermann) [Select]
#DEFINE HTTPGET_SITE: "https://vk.com/bestmobagroup"
#DEFINE HTTPGET_OUTPUT_FILE: "bestmobagroup.txt"

EXECUTE("httpget.exe", STRCONCAT("-S ", HTTPGET_SITE, " -F ", HTTPGET_OUTPUT_FILE))

WHILE($isnew = 0)
   GETMESSAGE($wParam, $lParam, $isnew)
END_CYC

HALT