Author Topic: Простое создание снимков c цветокоррекцией COLORMODE  (Read 10294 times)

0 Members and 1 Guest are viewing this topic.

Grin

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

Code: (clickermann) [Select]
getscreen
HINTPOPUP ("Верхний левый угол")
WHILE(iskeydown(#space)=0)
   $vx=$_xmouse
   $vy=$_ymouse
END_CYC
wait(1)
HINTPOPUP ("Нижний правый   угол")
WHILE(iskeydown(#space)=0)
   $nx=$_xmouse
   $ny=$_ymouse
END_CYC
$nam=INPUTBOX("Введите имя файла", "Имя", 20)
screenshotex($vx,$vy,$nx,$ny,$nam)
$color = radiobox("Выберете режим CLORMODE, CANCEL - оставит только 1 оригинал  ","1","2","3","4","5","6","7","8")
if ($color!0)
colormode($color,$vx,$vy,$nx,$ny)
screenshotex($vx,$vy,$nx,$ny,$nam)
end_if 
$mr = dialogbox("Продолжаем?", 4)
if ($mr = 7)
   halt
end_if

Работает по нажатию на пробел -но поменять, я думаю, ни у кого проблем не вызовет.
« Last Edit: October 17, 2016, 11:57:28 AM by Oraven »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Упрощаем жизнь
« Reply #1 on: October 17, 2016, 11:42:51 AM »
Немного модифицировал.
Координаты углов снимка отмечаются кнопкой Ctrl
Вставил звуковые сигналы.
Использовал функцию SCREENSHOTFIX в результате снимки сохраняются в папку скрипта с конкретным именем.
Code: (clickermann) [Select]
#name "Скриншоты v1.0"

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

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

HINTPOPUP ("Нажмите CTRL для продолжения","Укажите нижний правый угол")
WHILE(iskeydown(#CTRL)=0)
   WAITMS(20)
END_CYC
$nx = $_xmouse
$ny = $_ymouse
WHILE(iskeydown(#CTRL)=1)
   WAITMS(20)
END_CYC
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
« Last Edit: October 17, 2016, 12:47:47 PM by Oraven »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
А чего у тебя GETSCREEN в 5 строке?

И координаты сохраняются не на момент нажатия CTRL, а на момент отпускания. Думаю так неудобно. Я прицелился, нажал CTRL. И до того как отпустил вполне могу сбить курсор.
« Last Edit: October 17, 2016, 12:07:56 PM by Vint »


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
А чего у тебя GETSCREEN в 5 строке?

И координаты сохраняются не на момент нажатия CTRL, а на момент отпускания. Думаю так неудобно. Я прицелился, нажал CTRL. И до того как отпустил вполне могу сбить курсор.

Координаты переделал, теперь они сохраняются сразу после нажатия Ctrl.
GETSCREEN с верху для того чтобы наведение курсора не повлияло на снимок. Кнопки там разные которые меняют цвет по наведению и др.

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
GETSCREEN с верху для того чтобы наведение курсора не повлияло на снимок. Кнопки там разные которые меняют цвет по наведению и др.
Не практично. Часто, нужно заснять серию элементов. До некоторых из них нужно ещё добраться. Для этого и сделано по кнопке клавиатуры иначе можно задавать прямо мышью. Т.е. снял "кнопку"... продолжаем... поделали что-то, получили нужное окно/элемент, опять сняли и т.д.
А так получается скрин сразу того, что не всегда нужно. А потом не закрывая диалог "Продолжаем" добираемся до нужного изображения и только потом подтверждаем продолжение.
Не удобно от слова "совсем".

Я думаю все себе уже давно писали подобные скриншотилки элементов в разных вариантах. Некоторые, кажется, даже выкладывали.
Но большой ценности в них нет.
Во первых каждый делает для себя как ему удобней. Код не сложный.

Ну и во вторых подходит не для всех организаций скрипта. Заснять кнопочки-элементы это одно. Часто нужно ещё расстояние промерять до других элементов или областей. Мне, как выяснилось, гораздо проще будет сделать кроп всего парой движений с более полного скриншота. И так несколько элементов на экране. Плюс остаётся скрин оригинал с размерами и расстояниями.
Поэтому поигравшись подобными скриптами "на заре" я их не юзаю. Ну кроме снимков в COLORMODE.


Grin

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Oraven я уже не стал заморачиваться с именем файла, он и так будет сохранять в папку с проектом скрипта, и у тебя не сохраняет оригинал(а это нередко нужно) но это не проблема - строка кода и все. А так уже себе скопировал.
Вопрос - при копирование скрипта с форума и вставке его в прогу - все русские буквы заменяются на "?", проще говоря исчезают коменты.
А вот со своего скрипта норм вставляются и русский не исчезает.
« Last Edit: October 17, 2016, 03:09:50 PM by Grin »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Вопрос - при копирование скрипта с форума и вставке его в прогу - все русские буквы заменяются на "?", проще говоря исчезают коменты.

Включи раскладки браузера и кликера в Ru

Grin

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Мдя - помогло. Спасибо.

Grin

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Есть вопрос. Как сделать так чтобы в скриншоте заменялись все цвета на маску кроме одного?
Смотрел справку PXLREPLACE меняет все пиксели(если стоит -1).
Это нужно для того что искомые скрины имеют полупрозрачные окна в игре(сделать не прозрачными не получится), вот поэтому делается маска поиска.
Кроме как цикла на ум ничего не приходит, тобиш попиксельно проверять.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Есть вопрос. Как сделать так чтобы в скриншоте заменялись все цвета на маску кроме одного?
Смотрел справку PXLREPLACE меняет все пиксели(если стоит -1).
Это нужно для того что искомые скрины имеют полупрозрачные окна в игре(сделать не прозрачными не получится), вот поэтому делается маска поиска.
Кроме как цикла на ум ничего не приходит, тобиш попиксельно проверять.

Маску задают в самой картинке поиска путем закрашивания всего не нужного в какой то цвет. Этот цвет указывают в функции за место -1

Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", 255, 100) // например так все пикселы с цветом 255 будут считаться прозрачными
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF

Grin

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Это понятно, но вот ручками красить скрин это долго, поэтому надо делать скрин сразу с маской, оставляя только один нужный мне цвет.

Всё - допилил, но работает очь долго,как по мне проще в паенте замену делать.
« Last Edit: October 17, 2016, 04:48:13 PM by Grin »

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Это понятно, но вот ручками красить скрин это долго, поэтому надо делать скрин сразу с маской, оставляя только один нужный мне цвет.
долго - да ладно?!  :o давай проверим, я долго покрашу в паинте, а ты напишешь перекрашываюший скрипт, задаш условия перекрашивания и сделаешь скрин сразу с маской?  ;)
жду от тебя картинку для тестирования, обещаю дать фору в виде заваривания и питья кружки чая.  :P
 
« Last Edit: October 17, 2016, 04:54:05 PM by Золотой »

Grin

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Перепутал функции инструмента, там можно только опред цвет поменять на другой. Лан - это не сильно важно, есть другой вопрос.
Как узнать размеры скрина? Это нужно для того чтоб делать рандом точку нажатия на найденную кнопку(не в один и тот же пиксель), тобишь скриптово узнать её разрешение.
И потом просто к корде добавлять рандом Х и У.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Из кликера никак. Но не ужели нельзя написать что то универсальное?
Code: (clickermann) [Select]
LCLICK($_return1+RND(0,5), $_return2+RND(0,5))