Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ivanuskov

Pages: [1]
1
Огромное спасибо, Vint. Из-за неопытности даже и не думал об анализе цветового канала. Буду работать в этом направлении.
Конечно, на мой нубский взгляд вычислять угол между кораблем и стрелкой - лишняя трата времени, ведь можно сделать небольшой поворот и проверить цвет пикселя перед кораблем на преобладание необходимого канала. А то потом же придется еще и разворот на необходимый угол делать, а учитывая разные характеристики кораблей - в том числе и скорость разворота - сделать это будет опять-таки затруднительно.
Занятие на весь вечер есть)

2
Пишу мини-бота для игры Sky2Fly. Написав более-менее рабочего бота для убийства мобов решил доработать его, чтобы он, когда  заканчивается боезапас, возвращался в город, ремонтировался, сгружал все на склад и летел обратно к мобам. Реализовать это можно с помощью флагов на карте. Ставишь такой, и направление к нему будет показываться на радаре (мини-карта) и в небе. Попытавшись сделать разворот к нужному флагу, столкнулся с проблемой - флаги динамически меняют свой цвет. Т.е. когда направление корабля и флага совпадают, то он очень яркий; иначе он становится бледнее, вплоть до практически невидимого (см. скрины). Порой случается глюк и флаг может стать бледным, даже если плывешь в его направлении. Все возможные цвета флага учесть очень трудно; цветокоррекция "съедает" флаг. Остается лишь корректировка по мини-карте, которую я не имею понятия, как осуществить, т.к. мини-карта не изменяет своего положения при повороте корабля, а корабль меняет свое положение на мини-карте. Если не очень понятно объяснил - снова смотри скрины.

3
Доброго времени суток.

Есть такая конструкция:
Code: (clickermann) [Select]
$time = $_time_t + 30
GETSCREEN
WHILE((PXL (100, 100) ! 255) & ($time > $_time_t))
   WAITMS (100)
   GETSCREEN
END_CYC
Возможно ли в данной конструкции использовать IF_PIXEL_IN вместо PXL.
Если да, то как будет выглядеть код?
Спасибо.


Code: (clickermann) [Select]
while((pxlcount(0, 0, $_xmax, $_ymax, 255)<1) & ($time > $_time_t))
    waitms(100)
    getscreen
end_cyc
Будет ждать, пока на экране не появится пиксель 255 цвета и не истекло время
Чуть более длинный, но куда более продуктивный вариант

Code: (clickermann) [Select]
$flag=0
while ($flag=0)
  if_pixel_in(0, 0, $_xmax, $_ymax, 255, 256, 257, ...) //все необходимые цвета
      $flag=1
  end_if
  waitms(100)
  getscreen
end_cyc

4
Так f1, f2 будет жаться раз в 4,5 минуты.
Только что проверил - после пяти нажатий Tab-1-2-3 нажимает f1 и f2. По времени выходит примерно 40 секунд (1 задержка в 7 секунд и 2 по 200 мс в каждой серии нажатий). Где вы нашли 4 минуты?

5
Oraven
Огромное спасибо за помощь!

6
Oraven
Спасибо! Не ответите ли еще на пару вопросов:
1. Как реализовать "зажатие"  в режиме привязки?
2. Возможна ли одновременная работа двух ботов с одним приложением? (один будет действовать исключительно мышкой, другой - клавиатурой)

7
Ребят, помогите найти ошибку в скрипте - он вообще ничего не делает. Может, это из=за привязки к окну или еще из-за чего...
Code: (clickermann) [Select]
#name "skybot"

sub(run_exe)  //запуск игры
keypress(#win)
waitms(100)
define($jj)
$jj=0
for($jj, $jj<12)
keypress(#up)
waitms(200)
end_cyc
keypress(#enter)
undefine($i)
end_sub
//--------------------------------
sub(set)  //необходимые настройки
define($kk)
wheeldown(15) //масштаб
waitms(500)
$kk=0
for ($kk, $kk<7)   //масштаб мини-карты
keydown(#ctrl)
waitms(100)
keydown(187)//=
waitms(100)
keyup(#ctrl)
waitms(100)
keyup(187)//=
waitms(100)
end_cyc
end_sub
//--------------------------------

sub(setting)    //настройка в зависимости от условий
if_picture_in(1186, 165, 1284, 238, "from_city.bmp", -1, 70)
lclick($_return1, $_return2)
wait(3)
gosub(set)
keypress(#down)
waitms(200)
keypress(#down)
else
gosub(set)
end_if
end_sub
//--------------------------------


$sky_hwnd=wndfind("Sky2Fly", 1)
if($sky_hwnd=0)
gosub(run_exe)
while ($sky_hwnd=0)
waitms(200)
$sky_hwnd=wndfind("Sky2Fly", 1)
end_cyc
end_if

hset($sky_hwnd, 1)
gosub(setting)
halt // for single run

UPD:   скрипт не выполняет команды (вроде keypress) ВООБЩЕ. Может, дело в привязке к окну?
UPD 2: Действительно, все дело в привязке к окну - с ней ничего не работает

8
Как-то так
Code: (clickermann) [Select]
$waiting=0
$i=0
while($i=0)
   keypress(#tab)
   wait(7)
   $waiting=$waiting+7
   keypress(#1)
   waitms(200)
   keypress(#2)
   waitms(200)
   keypress(#3)
   $waiting=$waiting+1
   if ($waiting>35)
    keypress(#f1)
    waitms(300)
    keypress(#f2)
    $waiting=0
   end_if
end_cyc
 

Pages: [1]