Author Topic: Помогите пожалуйста сделать скрипт при увеличении шкалы  (Read 6982 times)

0 Members and 1 Guest are viewing this topic.

Михаил

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Нужна помощь в доработке скрипта, заранее спасибо.
Игра про рыбалку.
При поклевке появляются 2 шкалы. G-тянуть катушкой, H-леской или наоборот, но это не важно. Если поклевка слабая то шкалы даже расти не будут (это нам не интересно). Но когда клюет что-то мощное, шкалы заполняются быстро. Если одна из шкал дойдет до 100% лопнет леска, короче будет плохо. Шкала когда растет от 0 до 100% меняет цвет от зеленого до ярко красного. По середине примерно пиксель с номером цвета где-то от 8000 и ниже (редко совпадает). Нужно чтобы нажатая кнопка G тянула шкалу до середины, потом отпускалась до нуля, в то время когда G находится на середине нажимается H, тянет шкалу до середины и т.д. пока не вытащишь.
Подсекаю в ручном режиме и запускаю скрипт
Скрипт:
GETSCREEN
$F<10000
$G<27000
IF_PICTURE_IN (20,490, 1018,540, "I5.bmp", -1, 80) //После подсечки появляется характерное изображение с двумя шкалами
KEYDOWN(71)              //кнопка G           
IF_PIXEL_IN(20,524, 1018,534, $f)   //поиск пикселя в заданной области с номером цвета менее 27000
KEYUP(71)
WAITMS(10)
KEYDOWN(72)             //кнопка H                   
IF_PIXEL_IN(20,490, 1018,500, $g)  //поиск пикселя в заданной области с номером цвета менее 10000
KEYUP(72)
WAITMS(10)
END_IF
END_IF
END_IF

В итоге кнопкой G тянет процентов на 10-20, а H примерно на 80-100% обычно с обрывом снастей.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Ты там бред написал, переменные так не объявляют и нельзя в поиске указывать диапазон.
Тебе нужно не анализировать цвет от зеленого до красного а смотреть цвет серого фона!
Зажимаем кнопку и ждем пока серый цвет в шкале закроет поднявшийся уровень. В этом случае цикл прервется, идем дальше отпускаем клавишу и нажимаем другую кнопку и тоже самое.

Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (20,490, 1018,540, "I5.bmp", -1, 80)
   KEYDOWN(#G)
   WHILE(PXL(941,625) = 2696999) // координата и цвет пиксела пустой шкалы по середине (серый цвет)
      WAITMS(10)
      GETSCREEN
   END_CYC
   KEYUP(#G)
   WAITMS(50)
   
   KEYDOWN(#H)
   GETSCREEN
   WHILE(PXL(939,802) = 2696999) // тоже самое для второй шкалы
      WAITMS(10)
      GETSCREEN
   END_CYC
   KEYUP(#H)
   WAITMS(100)
END_IF
WAITMS(50)

Михаил

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Спасибо!!!!
Но есть проблемы:
1. Цвет пикселя при разных забросах разный (т.е. не равен 2696999). Как то бы указать диапазон цветов.
2. Не могу указать координаты пикселя, т.к. шкалы появляются в зависимости от заброса, т.е. по вертикали они всегда в одном месте, а по горизонтали в разном.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Спасибо!!!!
Но есть проблемы:
1. Цвет пикселя при разных забросах разный (т.е. не равен 2696999). Как то бы указать диапазон цветов.
2. Не могу указать координаты пикселя, т.к. шкалы появляются в зависимости от заброса, т.е. по вертикали они всегда в одном месте, а по горизонтали в разном.

Ну вот совсем никаких проблем тут нет  :)
1. Используй цветокоррекцию чтобы упростить цвета.

Code: (clickermann) [Select]
// Получение скриншота с цветокоррекцией
GETSCREEN
COLORMODE(6)
SCREENSHOT
HALT
С полученного скриншота возьми скорректированный усредненный цвет.
Можно поиграться с уровнем, но 6 это оптимально
Далее незабываем указать туже цветокоррекцию после GETSCREEN

2. Ты же вроде как используешь функцию поиска картинки этих шкал? Можно использовать возвращенные координаты шкал чтобы узнать их местоположение и относительно них искать в точке посредине шкалы.

Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (20,490, 1018,540, "I5.bmp", -1, 80)
   $x = $_return1 // записываем координаты в переменные
   $y = $_return2 // относительно этих координат нужно высчитать смещение на ценnр шкалы
   
   KEYDOWN(#G)
   COLORMODE(6)
   WHILE(PXL($x+40,$y+20) = 2696999) // координата и цвет пиксела пустой шкалы по середине (серый цвет)
      WAITMS(10)
      GETSCREEN
      COLORMODE(6)
   END_CYC
   KEYUP(#G)
   WAITMS(50)
   
   KEYDOWN(#H)
   GETSCREEN
   COLORMODE(6)
   WHILE(PXL($x+40,$y+30) = 2696999) // тоже самое для второй шкалы
      WAITMS(10)
      GETSCREEN
      COLORMODE(6)
   END_CYC
   KEYUP(#H)
   WAITMS(100)
END_IF
WAITMS(50)

Отдельным скриптом пишешь запись в лог координат и высчитываешь смещение.
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (20,490, 1018,540, "I5.bmp", -1, 80)
   print("Найден в координатах X=", $_return1, ", Y=", $_return2)
END_IF
HALT

Пример: на сколько пикселов от полученных координат нужно сдвинуться, чтобы попасть в центр шкалы.
Code: (clickermann) [Select]
$x+40,$y+20
« Last Edit: April 09, 2014, 11:06:59 AM by Oraven »

Михаил

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Спасибо!!!! Все заработало. Ты гений!!!!

BigGul

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
IF_PICTURE_IN (20,490, 1018,540, "I5.bmp", -1, 80)

подскажите, что это -1, 80 ???

Zets

  • Освоившийся
  • **
  • Posts: 66
    • View Profile
    • vk.com
IF_PICTURE_IN (20,490, 1018,540, "I5.bmp", -1, 80)

подскажите, что это -1, 80 ???

Читайте справку!

Синтаксис

IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency]) - производит поиск изображения в прямоугольной области буфера анализа


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


BigGul

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Спасибо!
У меня в справке вот-так:
Синтаксис

IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor]) - производит поиск изображения в прямоугольной области буфера анализа


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


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



BigGul

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
IF_PICTURE_IN (20,490, 1018,540, "I5.bmp", -1, 80)

в этой строке -1 - это bgcolor. Верно? а что это за цвет -1?

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
IF_PICTURE_IN (20,490, 1018,540, "I5.bmp", -1, 80)

в этой строке -1 - это bgcolor. Верно? а что это за цвет -1?

это значит bgcolor не задан то есть никакого цвета не игнорируется

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Спасибо!
У меня в справке вот-так:
Синтаксис

IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor]) - производит поиск изображения в прямоугольной области буфера анализа


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


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

Скачай последнюю версию 4.10
http://crapware.aidf.org/page/clickermann

BigGul

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Спасибо! скачал. Всё ОК!

ssanarhist

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Спасибо!!!! Все заработало. Ты гений!!!!

Все вроде понятно. Но как выглядит файл I5?