5
« on: September 26, 2015, 12:09:23 AM »
Долго мучался, пробовал разные подходы и в итоге понял что лучший вариант это сабы.
Скрипт выкладываю не для поиска ошибок, а просто чтоб люди посмотрели, может сами возьмут как пример и напишут чего дельного.
#include "sub.cms"
//=============================================
//Мониторинг
$tik = 0 //первостепенные задачи
$takt = 0 //думал расширить в дальнейшем
HINTPOPUP( "Начинаем")
WHILE($var < 5)
IF(ISKEYDOWN(#PageDown)=1)
HINTPOPUP("Стоп") //пришлось так сделать, потому что в один прекрасный момент скрипт перестал останавливаться пока не закроешь через диспетчер
HALT
END_IF
$takt = $takt + 1
$tik = $tik + 1
HINTPOPUP( $tik )
//=============================================
//Проверка соединения
IF($tik = 1)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "connect.bmp", -1, 100)
connect()
end_if
end_if
//=============================================
//Проверка корабля
IF($tik = 3)
GETSCREEN
if_picture_in(1200, 133, 1247, 166, "корабль.bmp")
else
HINTPOPUP("Поправляю интер", "Косяк")
SETTHREAD (thr1, 0)
SETTHREAD (thr2, 0)
KEYDOWN(#H)
WAITMS(60)
KEYUP(#H)
WAIT(5)
inter()
end_if
end_if
WAITMS(50)
//=============================================
//Проверка карты
IF($tik = 4)
GETSCREEN
if_picture_in(1200, 535, 1247, 570, "миникарта.bmp")
else
HINTPOPUP("Поправляю интер", "Косяк")
SETTHREAD (thr1, 0)
SETTHREAD (thr2, 0)
KEYDOWN(#H)
WAITMS(60)
KEYUP(#H)
WAIT(5)
inter()
end_if
end_if
WAITMS(50)
//=============================================
//Проверка пета
GETSCREEN
IF($tik = 5)
IF_PICTURE_IN (1161,350, 1219, 390, "петработает.bmp", -1, 100)
else
HINTPOPUP("Что то с петом", "Ахтунг")
SETTHREAD (thr1, 0)
SETTHREAD (thr2, 0)
pet()
WAIT(5)
END_IF
end_if
WAITMS(50)
END_IF
END_IF
//===================================
IF($tik = 7)
$hp = PXLCOUNT(1281,177, 1291,184, 9363348)
IF($hp < 8)
HINTPOPUP("Мало хп")
SETTHREAD (thr1, 0)
SETTHREAD (thr2, 0)
portbeg()
else
IF_PICTURE_IN (1200,150, 1300,250, "конфа2.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
SETTHREAD (thr1, 1)
SETTHREAD (thr2, 1)
END_IF
$shit = PXLCOUNT(1281,197, 1291,204, 14670478)
IF($shit < 7)
KEYDOWN(#c)
WAITMS(60)
KEYUP(#c)
END_IF
end_if
//=============================================
//прием группы
IF($tik = 8)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "принятьгруппу.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
END_IF
WAITMS(50)
//=============================================
//Смерть
if($takt = 1)
if_pixel_in(0,0,$_xmax,$_ymax,2654020)
WAITMS(50)
SCREENSHOT
smert()
end_if
end_if
IF($tik = 10)
$tik = 0
END_IF
IF($takt = 10)
$takt = 0
END_IF
END_CYC
Thread(thr1, 0)
SUB (m-move, $MOVE_END_X, $MOVE_END_Y)
$MOVE_SPEED = 2
$MOVE_Start_X = $_xmouse
$MOVE_Start_Y = $_ymouse
$MOVE_X = $MOVE_Start_X
$MOVE_Y = $MOVE_Start_Y
$dist= DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
$MOVE_SPEEDVAR= INT((SQRT($dist))/$MOVE_SPEED)
//LOGWRITE ("dist ",$dist)
//LOGWRITE ("MOVE_SPEEDVAR ",$MOVE_SPEEDVAR)
IF($MOVE_SPEEDVAR < 1)
$MOVE_SPEEDVAR=1
END_IF
$MOVE_step=($dist-1)/$MOVE_SPEEDVAR
$MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
$MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
$MOVE_i=0
FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
$MOVE_X = $MOVE_X+$MOVE_X_step
$MOVE_Y = $MOVE_Y+$MOVE_Y_step
MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
WAITMS(1)
END_CYC
MOVE($MOVE_END_X, $MOVE_END_Y)
END_SUB
//m-move(150, 150)
//HALT
SUB (m-lclick, $MOVE_END_X, $MOVE_END_Y)
// Пример вызова:
// m-lclick(150, 150)
$LC1 = $MOVE_END_X
$LC2 = $MOVE_END_Y
m-move($MOVE_END_X, $MOVE_END_Y)
WAITMS(20)
LDOWN($LC1, $LC2)
WAITMS(30)
LUP($LC1, $LC2)
WAITMS(30)
END_SUB
SUB (m-mclick, $MOVE_END_X, $MOVE_END_Y)
$LC1 = $MOVE_END_X
$LC2 = $MOVE_END_Y
m-move($MOVE_END_X, $MOVE_END_Y)
WAITMS(RND(200,300))
MDOWN($LC1, $LC2)
WAITMS(30)
MUP($LC1, $LC2)
WAITMS(30)
END_SUB
// область поиска
$x_1 = 10
$y_1 = 171
$x_2 = 1100
$y_2 = 812
$cent_x=int(731) // центральная точка области поиска
$cent_y=int(489)
//=============================================
$x=0
$y=0
GETSCREEN($x_1,$y_1, $x_2,$y_2)
SCANPXL($arr,$x_1,$y_1, $x_2,$y_2, 9755391,6199541, 15174997, 15053399)
FOR($a=0,$a<ARRSIZE($arr),2)
IF(DIST($arr[$a],$arr[$a+1],$cent_x,$cent_y)<DIST($x,$y,$cent_x,$cent_y))
$x=$arr[$a]
$y=$arr[$a+1]
END_IF
END_CYC
IF(ARRSIZE($arr) > 0)
m-lclick($x,$y-15)
WAITMS(400)
END_IF
UNDEFINE($arr)
End_thread
//=============================================
//Движение
Thread(thr2, 0)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "мини.bmp", -1, 100)
$x1=($_return1)
$x2=($_return1+150)
$y1=($_return2+55)
$y2=($_return2+135)
WAITMS(100)
END_IF
lclick(RND($x1,$x2),RND($y1,$y2)
WAIT(4)
End_thread