Author Topic: Поиск постоянно меняющегося объекта на экране.  (Read 1654 times)

0 Members and 1 Guest are viewing this topic.

maxempolk

  • Зашел в гости
  • *
  • Posts: 6
  • Clickermann Превыше всего
    • View Profile
Уже второй день немогу догадаться ...
Есть игра , в игре есть герой , он постоянно двигается , но куда бы он не пошёл над ним всегда будет полоска жизней. Скрипт должен найти эту полоску (которая постоянно может менятся в зависимости от количевства его жизней). И по количевству пикселей в полоске узнать количевство жизней . Есть подтверждённая инфа что 1 кубик в шкале жизней это 200 хп , нужно что бы искало 2 или меньше кубика хп . Картинка героя и его шкалы жизней во "Вложке".Причём это ещё не всё  ;D будет 5 вариантов . И в каждом будет снимать разное количевство хп . Зарание спасибо за ответ .
« Last Edit: June 28, 2017, 10:40:23 PM by maxempolk »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Сначала нужно найти героя. Сделать это можно по имени. Я искал первую букву M.
Далее относительно координат буквы M начинаем считать пикселы в зоне под буквой M
Картинку "M.bmp" я сделал в COLORMODE 6 закрасив в ней несколько пикселей зеленым и указал этот цвет как прозрачность в функции 65280. Процент поиска поставил 90% потому что в одном случаи Mi в другом Mo картинки немного разные но так находит обе.

Цвет полоски взят в COLORMODE 7 так она становится полностью однородной.

Вот написал по твоим картинкам.
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "M.bmp", 65280, 90)
   //   MOVE($_return1, $_return2) // Это для теста поиска героя
   //   WAITMS(100)
   COLORMODE(7)
   $life = PXLCOUNT($_return1-2, $_return2+10, $_return1+55, $_return2+18, 8355839) // считаем количество пикселей
   LOGWRITE ("Жизней: ", $life)
   IF($life < 60) // если меньше 60
      HINTPOPUP("Мало жизней", "Внимание!")
   END_IF
   
END_IF

HALT

В итоге смотрим лог полученный с двух картинок:
Code: [Select]
9:38:23 Жизней: 60
9:38:43 Жизней: 135
« Last Edit: June 26, 2017, 08:53:55 AM by Oraven »

maxempolk

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

Qwerry

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Нескромный вопрос, так речь про героя -вашего персонажа- о жизнях которого нам надо узнать или же есть куча мобов рядом с героем, жизни которых надо проанализиновать, чтобы найти среди них самого слабого?
Или правильный вариант- это то, что у вас в подчинении куча героев, причем с рандомными именами, слабейшему из которых что-то там надо (пару других менее вероятных вариантов - пока не рассматриваю).

И как вы планируете отличать полоски жизней своего персонажа от полосок жизней других мобов или игроков? Или надо анализировать все красные полоски, которые видно (во втором случае - зачем написано "в игре есть герой", будто бы он один и должен быть выделен среди остальных)?

Пожалуйста, постарайтесь объясняться максимально точно, чтоб не допускать НИКАКИХ разночтений ::) Ведь если вам кажется, что всё понятно, это не значит, что людям незнакомым с игрой действительно будет ясно, что именно нарисовано на вашем экране и что скрипту надо делать.  И в итоге эти люди  могут потратить свое время и силы абсолютно впустую :(