Author Topic: Скрипт для онлайн игры TimeZero  (Read 3968 times)

0 Members and 2 Guests are viewing this topic.

Badimboy

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Скрипт для онлайн игры TimeZero
« on: January 25, 2017, 10:11:52 PM »
Есть модифицировать графику самостоятельно и перестроить скрипт под твои размеры игрового окна и модифицированные текстуры, модифицируй, фотошоп в помощь, образец на форуме. Там практически всё превращается в простые цветные шестиугольники и кликер находит и обходит их уверенно.
А можно поподробнее как модифицировать графику,  на каком форуме образец?

Ну а пока, у мобов есть 6 положений и получается громоздко
Code: [Select]
SCANPICTURE($ARR_SCAN, 455, 130, 1355, 525, "Timezero\rat1.bmp", -1, 100) // Крыса 1,3,5,7,9,11 направление движения моба по часам
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $rat[$n] = Dist ($Pers_X, $Pers_Y, $X, $Y)  //Дистанция между персом и крыской
   //   Print("Дистанция до крысы ", $n, " ", $rat[$n])
   inc ($n)
   WAITMS(100)
END_CYC
UNDEFINE($ARR_SCAN)

SCANPICTURE($ARR_SCAN, 455, 130, 1355, 525, "Timezero\rat3.bmp", -1, 100)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $rat[$n] = Dist ($Pers_X, $Pers_Y, $X, $Y)  //Дистанция между персом и крыской
   //   Print("Дистанция до крысы ", $n, " ", $rat[$n])
   inc ($n)
   WAITMS(100)
END_CYC
UNDEFINE($ARR_SCAN)

SCANPICTURE($ARR_SCAN, 455, 130, 1355, 525, "Timezero\rat5.bmp", -1, 100)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $rat[$n] = Dist ($Pers_X, $Pers_Y, $X, $Y)  //Дистанция между персом и крыской
   //   Print("Дистанция до крысы ", $n, " ", $rat[$n])
   inc ($n)
   WAITMS(100)
END_CYC
UNDEFINE($ARR_SCAN)

SCANPICTURE($ARR_SCAN, 455, 130, 1355, 525, "Timezero\rat7.bmp", -1, 100)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $rat[$n] = Dist ($Pers_X, $Pers_Y, $X, $Y)  //Дистанция между персом и крыской
   //   Print("Дистанция до крысы ", $n, " ", $rat[$n])
   inc ($n)
   WAITMS(100)
END_CYC
UNDEFINE($ARR_SCAN)

SCANPICTURE($ARR_SCAN, 455, 130, 1355, 525, "Timezero\rat9.bmp", -1, 100)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $rat[$n] = Dist ($Pers_X, $Pers_Y, $X, $Y)  //Дистанция между персом и крыской
   //   Print("Дистанция до крысы ", $n, " ", $rat[$n])
   inc ($n)
   WAITMS(100)
END_CYC
UNDEFINE($ARR_SCAN)

SCANPICTURE($ARR_SCAN, 455, 130, 1355, 525, "Timezero\rat11.bmp", -1, 100)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $rat[$n] = Dist ($Pers_X, $Pers_Y, $X, $Y)  //Дистанция между персом и крыской
   //   Print("Дистанция до крысы ", $n, " ", $rat[$n])
   inc ($n)
   WAITMS(100)
END_CYC
UNDEFINE($ARR_SCAN)

И так для каждого моба, + есть ещё цветные. Можно ли как нибудь упростить сие?

Badimboy

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: Скрипт для онлайн игры TimeZero
« Reply #1 on: January 28, 2017, 03:40:27 PM »
Если пишется слово "ФОРУМ" и нет ни ссылки ни названия, то естественно имеется в виду только тот где это слово написано.
Могли бы Вы дать ссылку? Самостоятельно у меня найти не получилось.

И ещё вопрос. Определяю количество мобов по миникарте
Code: [Select]
GETSCREEN
COLORMODE(6)
SCANPICTURE($ARR_SCAN, $MiniMap_X1,$MiniMap_Y1, $MiniMap_X2,$MiniMap_Y2, "Bmp\Мобы на миникарте.bmp", -1, 100)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC ($ARR_NUM)
   WAITMS (100)
END_CYC
LOGWRITE ("Количество Мобов в бою ", $ARR_NUM/2, " шт")
UNDEFINE($ARR_SCAN)
И в тех случаях когда мобы стоят раздельно, всё ищется правильно

Но стоит мобам сойтись, и находит больше чем есть на самом деле.

Как это исправить?



Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Скрипт для онлайн игры TimeZero
« Reply #2 on: January 28, 2017, 05:09:31 PM »
И ещё вопрос. Определяю количество мобов по миникарте
каким то странным способом

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
SCANPICTURE($ARR_SCAN, $MiniMap_X1,$MiniMap_Y1, $MiniMap_X2,$MiniMap_Y2, "Bmp\Мобы на миникарте.bmp", -1, 100)
LOGWRITE ("Количество Мобов в бою ", $ARR_SCAN/2, " шт")
UNDEFINE($ARR_SCAN)

Badimboy

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: Скрипт для онлайн игры TimeZero
« Reply #3 on: January 28, 2017, 11:54:21 PM »
каким то странным способом

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
SCANPICTURE($ARR_SCAN, $MiniMap_X1,$MiniMap_Y1, $MiniMap_X2,$MiniMap_Y2, "Bmp\Мобы на миникарте.bmp", -1, 100)
LOGWRITE ("Количество Мобов в бою ", $ARR_SCAN/2, " шт")
UNDEFINE($ARR_SCAN)

Да спасибо, просто до этого ещё и координаты были нужны. Только у Вас очепятка  ;)
Code: (clickermann) [Select]
LOGWRITE ("Количество Мобов в бою ", ARRSIZE ($ARR_SCAN)/2, " шт")
А что посоветуете с наложением картинок?
« Last Edit: January 29, 2017, 12:26:06 AM by Badimboy »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Скрипт для онлайн игры TimeZero
« Reply #4 on: January 29, 2017, 10:36:20 AM »
Рассмотрел картинку. Кружки одинаковой формы. Просто нужно задать прозрачность уголков.

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "Image_0009_1.bmp", 65280, 100) // тут указываем цвет прозрачности

$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   LCLICK($X, $Y)   // Клик
   WAITMS(500)
END_CYC
UNDEFINE($ARR_SCAN)

HALT

Badimboy

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: Скрипт для онлайн игры TimeZero
« Reply #5 on: January 29, 2017, 12:14:05 PM »
Рассмотрел картинку. Кружки одинаковой формы. Просто нужно задать прозрачность уголков.
Не помогло, и с прозрачностью находит больше чем нужно

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Скрипт для онлайн игры TimeZero
« Reply #6 on: January 29, 2017, 12:36:21 PM »
Тогда воспользуемся смещением описанным в скрипте SCANPXL

найти и прокликать
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "Image_0009_1.bmp", 65280, 100)

$ARR_NUM = 0
$count = 0
$SHIFT_X = 2 // смещение (кол-во игнор пикселов после найденного)
$SHIFT_Y = 2
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   IF(($X > $X2) | ($Y > $Y2))
      $X2 = $X + $SHIFT_X
      $Y2 = $Y + $SHIFT_Y
      LCLICK($X, $Y) // Клик
      WAITMS(50)     
   END_IF
END_CYC
UNDEFINE($ARR_SCAN)

HALT

Просто определить количество
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "Image_0009_1.bmp", 65280, 100)

$ARR_NUM = 0
$count = 0
$SHIFT_X = 2 // смещение (кол-во игнор пикселов после найденного)
$SHIFT_Y = 2
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   IF(($X > $X2) | ($Y > $Y2))
      $X2 = $X + $SHIFT_X
      $Y2 = $Y + $SHIFT_Y 
      INC($count,1)     
   END_IF
END_CYC
UNDEFINE($ARR_SCAN)

LOGWRITE ($count)

HALT

Badimboy

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: Скрипт для онлайн игры TimeZero
« Reply #7 on: January 29, 2017, 03:08:15 PM »
Oraven
Спасибо! Всё работает.
Code: [Select]
$SHIFT_Y = 2Только по Y плюсовать больше чем 1 чревато пропуском нужной картинки

kiril
игнор нужно отключить, а картинку для поиска сделать игровым маркером вместо жёлтых кругов и всё станет находиться правильно. можно поступить проще в центр кругов добавить пиксель другого цвета, цель манипуляций избавиться от случайного образования новых картинок маркеров при сближении нескольких реальных маркеров.
Можно поподробнее как это сделать? Желательно оба варианта )


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Скрипт для онлайн игры TimeZero
« Reply #8 on: January 30, 2017, 09:58:53 AM »
Можно вопрос. А нафига вообще считать количество мобов? Определяешь ближайшего и к нему топаешь.


Badimboy

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: Скрипт для онлайн игры TimeZero
« Reply #9 on: January 30, 2017, 11:39:22 AM »
Можно вопрос. А нафига вообще считать количество мобов? Определяешь ближайшего и к нему топаешь.
  • Для собственного обучения  :)
  • Для ведения логов

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Скрипт для онлайн игры TimeZero
« Reply #10 on: January 30, 2017, 12:26:56 PM »
Ну как будешь атаковать на основном поле, там и посчитаешь.