Author Topic: Как дойти до определенного действия.  (Read 3445 times)

0 Members and 1 Guest are viewing this topic.

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Подскажите пожалуйста, как вычислить строку действия которое совершается? В общем есть длинный скрипт в котором порядка 20000 строк. Часть этого скрипта(примерно с 50 до 70 % от всего скрипта) нужно удалить. Но нужно удалить от конкретного действия до определенного момента. Как можно выяснить какая именно строка отвечает за последнее действие, после которого мне нужно удалить часть скрипта опять таки до определенного действия. Могу ли я как то запустить скрипт и наблюдать за совершаемыми действиями. И когда увижу что было выполнено нужное мне, сразу просмотреть какая это была строка? Надеюсь что хоть более менее понятно объяснил))

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Как дойти до определенного действия.
« Reply #1 on: November 21, 2019, 10:15:29 PM »
Можно вести лог, после каждого действия впиши вот это в кавычках напиши пометки, потом по логу будет видно.
Code: (clickermann) [Select]
LOGWRITE ("Действие")
Пример:
Code: (clickermann) [Select]
LOGWRITE ("Поиск картинки")
GETSCREEN
IF_PICTURE_IN (0,0,100,100, "картинка.bmp", -1, 100)
LOGWRITE ("Картинка нашлась")
   LCLICK($_return1, $_return2)
   WAITMS(100)
ELSE
LOGWRITE ("Картинка не нашлась")
   WAITMS(500)
END_IF
« Last Edit: November 21, 2019, 10:20:53 PM by Ramzesia »

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Как дойти до определенного действия.
« Reply #2 on: November 21, 2019, 10:30:45 PM »
Можно вести лог, после каждого действия впиши вот это в кавычках напиши пометки, потом по логу будет видно.
Code: (clickermann) [Select]
LOGWRITE ("Действие")
Пример:
Code: (clickermann) [Select]
LOGWRITE ("Поиск картинки")
GETSCREEN
IF_PICTURE_IN (0,0,100,100, "картинка.bmp", -1, 100)
LOGWRITE ("Картинка нашлась")
   LCLICK($_return1, $_return2)
   WAITMS(100)
ELSE
LOGWRITE ("Картинка не нашлась")
   WAITMS(500)
END_IF
Спасибо конечно за помощь! Но я к сожалению такой "продвинутый" юзер что вообще не понял что нужно сделать...
Вот у меня есть часть скрипта как я нажимаю на какую то иконку в игре:
move(685,230)
waitms(264 + $S_CORR)
  lDown(685,230)
waitms(112 + $S_CORR)
  lUp(685,230)
waitms(168 + $S_CORR)
move(686,230)
waitms(8 + $S_CORR)
move(687,230)
waitms(8 + $S_CORR)
Я так понимаю, ваш метод может выявить какие именно картинки нажимаются?Я просто только начал познавать данную сферу и не особо еще силен в этом. Не могли бы поподробней объяснить что нужно сделать?Пожалуйста!)

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Как дойти до определенного действия.
« Reply #3 on: November 22, 2019, 11:05:14 AM »
Судя по куску скрипта, у вас записанный скрипт, возможно если вы выложит логику скрипта ( что он должен делать) то можно написать что то попроще и покороче.

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Как дойти до определенного действия.
« Reply #4 on: November 22, 2019, 05:43:49 PM »
Судя по куску скрипта, у вас записанный скрипт, возможно если вы выложит логику скрипта ( что он должен делать) то можно написать что то попроще и покороче.
Есть игра в ВК. И есть десять разных аккаунтов. В игре каждый день нужно выполнять одни и те же задания. То есть нажимать на определенные кнопки(иконки) в окне игры и получать призы(бонусы). Я записал скрипт длиной порядка 15 минут т.к. в игре не получается выполнять действия быстро. Т.е. нужно ждать пока прогрузятся те или иные элементы игры или выполнится задание(к примеру прохождение миссии может занимать около 20-30 секунд). Я запускаю сразу около 10 окон с разными аккаунтами и запускаю 10 же автокликеров. Чтобы процесс происходил быстрее.

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Как дойти до определенного действия.
« Reply #5 on: November 22, 2019, 05:44:31 PM »
Вот сам скрипт

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Как дойти до определенного действия.
« Reply #6 on: November 23, 2019, 09:39:33 AM »
Понимаешь то что ты дал ничего не говорит, нужны картинки, время до клика условия. Что бы ты понимал что можно сделать, при помощи кликера, можно сделать маленький скрин, допустим кнопки на которую нужно нажать, и при помощи функции ожидание картинки, ждать пока появится кнопка и как она появится нажать на нее. Выложи картинки в NPG или BMP формате
пример:
Code: (clickermann) [Select]
LCLICK(10,10) // Клик по заданию
// Задание началось

$check = 0
WHILE($check = 0) // цыкл ждем пока появится картинка (кнопка) по которой мы понимаем что задание завершено
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100) // Ожидаемая картинка
      $check = 1 // дождались картинку выходим из цыкла
      LCLICK($_return1, $_return2) // кликаем по кнопке
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

Выложи картинки в PNG или BMP формате, вот этим скриптом сделай на каждом этапе скрин. Скопируй код ниже в кликер, нажми применить запусти, отметь верхний левый угол области которую хочешь снять потом нижний правый угол, после выбери цветокоррекцию 1, программа само будет говорить что делать, попробуй пару раз разберешься. картинки сохраняются в папку кликермена.
Code: (clickermann) [Select]
#name "Скриншоты v1.0"

// Требуется версия кликера 4.12 и выше

GETSCREEN
HINTPOPUP ("Нажмите CTRL для продолжения","Укажите верхний левый угол")
WHILE(iskeydown(#CTRL)=0)
   WAITMS(20)
END_CYC
WHILE(iskeydown(#CTRL)=1)
   WAITMS(20)
END_CYC
$vx = $_xmouse
$vy = $_ymouse
BEEP(1000,200)

HINTPOPUP ("Нажмите CTRL для продолжения","Укажите нижний правый угол")
WHILE(iskeydown(#CTRL)=0)
   WAITMS(20)
END_CYC
WHILE(iskeydown(#CTRL)=1)
   WAITMS(20)
END_CYC
$nx = $_xmouse
$ny = $_ymouse
BEEP(1000,200)

GETFILELIST($arr, "Image_*.bmp")
IF(ARRSIZE($arr) > 0)
   $n = ARRPOP($arr)
   $n = INT(STRCUT2($n, STRPOS($n, "_")+1, STRPOS($n, ".")-1))+1
   $nam=INPUTBOX("Введите имя файла", STRCONCAT("Image_",$n), 999)
ELSE
   $nam=INPUTBOX("Введите имя файла", "Image_1", 999)
END_IF
IF($nam = "")
   HALT
END_IF

$nam=STRCONCAT($nam,".bmp")

$color = RADIOBOX("Выберете режим CLORMODE CANCEL - оригинал","1","2","3","4","5","6","7","8")
COLORMODE($color,$vx,$vy,$nx,$ny)
SCREENSHOTFIX($vx,$vy,$nx,$ny,$nam, 0)

$mr = DIALOGBOX("Продолжаем?", 4)
IF($mr = 7)
   HALT
END_IF

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Как дойти до определенного действия.
« Reply #7 on: November 23, 2019, 11:23:10 AM »
Понимаешь то что ты дал ничего не говорит, нужны картинки, время до клика условия. Что бы ты понимал что можно сделать, при помощи кликера, можно сделать маленький скрин, допустим кнопки на которую нужно нажать, и при помощи функции ожидание картинки, ждать пока появится кнопка и как она появится нажать на нее. Выложи картинки в NPG или BMP формате
пример:
Code: (clickermann) [Select]
LCLICK(10,10) // Клик по заданию
// Задание началось

$check = 0
WHILE($check = 0) // цыкл ждем пока появится картинка (кнопка) по которой мы понимаем что задание завершено
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100) // Ожидаемая картинка
      $check = 1 // дождались картинку выходим из цыкла
      LCLICK($_return1, $_return2) // кликаем по кнопке
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

Выложи картинки в PNG или BMP формате, вот этим скриптом сделай на каждом этапе скрин. Скопируй код ниже в кликер, нажми применить запусти, отметь верхний левый угол области которую хочешь снять потом нижний правый угол, после выбери цветокоррекцию 1, программа само будет говорить что делать, попробуй пару раз разберешься. картинки сохраняются в папку кликермена.
Code: (clickermann) [Select]
#name "Скриншоты v1.0"

// Требуется версия кликера 4.12 и выше

GETSCREEN
HINTPOPUP ("Нажмите CTRL для продолжения","Укажите верхний левый угол")
WHILE(iskeydown(#CTRL)=0)
   WAITMS(20)
END_CYC
WHILE(iskeydown(#CTRL)=1)
   WAITMS(20)
END_CYC
$vx = $_xmouse
$vy = $_ymouse
BEEP(1000,200)

HINTPOPUP ("Нажмите CTRL для продолжения","Укажите нижний правый угол")
WHILE(iskeydown(#CTRL)=0)
   WAITMS(20)
END_CYC
WHILE(iskeydown(#CTRL)=1)
   WAITMS(20)
END_CYC
$nx = $_xmouse
$ny = $_ymouse
BEEP(1000,200)

GETFILELIST($arr, "Image_*.bmp")
IF(ARRSIZE($arr) > 0)
   $n = ARRPOP($arr)
   $n = INT(STRCUT2($n, STRPOS($n, "_")+1, STRPOS($n, ".")-1))+1
   $nam=INPUTBOX("Введите имя файла", STRCONCAT("Image_",$n), 999)
ELSE
   $nam=INPUTBOX("Введите имя файла", "Image_1", 999)
END_IF
IF($nam = "")
   HALT
END_IF

$nam=STRCONCAT($nam,".bmp")

$color = RADIOBOX("Выберете режим CLORMODE CANCEL - оригинал","1","2","3","4","5","6","7","8")
COLORMODE($color,$vx,$vy,$nx,$ny)
SCREENSHOTFIX($vx,$vy,$nx,$ny,$nam, 0)

$mr = DIALOGBOX("Продолжаем?", 4)
IF($mr = 7)
   HALT
END_IF
Да, немного разобрался со скринами))Спасибо! Но вот проблемка. Когда я делаю скрины обведенных областей, то скрины получаются либо обрезанными, либо совсем другой части экрана...В чем может быть дело?

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Как дойти до определенного действия.
« Reply #8 on: November 23, 2019, 11:25:07 AM »
Скрин который побольше-это я скринил домик слева. А два остальных это маленькая кнопка "закрыть"

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Как дойти до определенного действия.
« Reply #9 on: November 23, 2019, 11:29:03 AM »
Я понял!Когда я пытаюсь закринить кнопку в новом диалоговом окне внутри игры(например там где открыты персонажи и нужно заскринить кнопку "закрыть") у меня скринится почему то все равно главный экран. Как бы скринится "сквозь" открытое окно с героями...Или я что то не то делаю:(((

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Как дойти до определенного действия.
« Reply #10 on: November 23, 2019, 11:36:00 AM »
Вот что я пытаюсь заскринить(первая картинка). И вот что выходит(вторая). Т.е. скринится все равно главный экраны игры "сквозь" новое диалоговое окно

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Как дойти до определенного действия.
« Reply #11 on: November 23, 2019, 12:06:45 PM »
Не, погодите. Какие картинки?  :D
Для начала нужно научится открывать окно с запущенной игрой.  Для этого тебе нужно создать для каждого пользователя ВК отдельный профиль, тогда ты сможешь пропустить этап входа в ВК и сразу открыть окно с запущенной игрой под нужным пользователем. Если у тебя с этим всё получится, то продолжим дальше.

Code: (clickermann) [Select]
$number = 0
EXECUTE("chrome.exe", STRCONCAT("--profile-directory=", "vk_user_data_", $number, "--new-window --window-position=0,0 --window-size=800,800 https://vk.com/play....")) 
HALT
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Как дойти до определенного действия.
« Reply #12 on: November 24, 2019, 04:07:00 AM »
Без скринов в формате PNG и BMP не с чем работать. И не пытайся jpg перевести в эти форматы, не будет работать. Пробуй этот скрипт, он сделает снимок всего экрана. Перед запуском сохрани скрип в папку кликера.
Code: (clickermann) [Select]
GETSCREEN
SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_", 0)
HALT

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Как дойти до определенного действия.
« Reply #13 on: November 24, 2019, 08:58:34 PM »
Без скринов в формате PNG и BMP не с чем работать. И не пытайся jpg перевести в эти форматы, не будет работать. Пробуй этот скрипт, он сделает снимок всего экрана. Перед запуском сохрани скрип в папку кликера.
Code: (clickermann) [Select]
GETSCREEN
SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_", 0)
HALT
Спасибо за помощь, но, как сказали выше, нужно начинать вообще с основ...На данный момент я(спасибо местным умельцам) только могу с помощью кликера запускать определенные профиля в вк с нужной мне игрой. Остальное наверное лучше будет вынести отдельной темой, т.к. тот скрипт, который описан в данной теме(который создавал я) уже не актуален.