Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: Vint on February 04, 2015, 03:18:23 PM
-
Есть приложение ВК Solo на клавиатуре http://vk.com/nabiraem.test?mid=66156092
В группе спрашивали на него скрипт. Посмотрев на приложение стало понятно что задача идеально подходит для начинающих скриптописцев. Скрипт по идее должен быть не сложным.
Понятно что вариантов реализации может быть несколько. Предлагайте свои варианты.
Мой вариант под катом и во вложении, но лучше попробуйте сначала сами
[spoiler]
Видео работы (много ошибок возникает из-за вмешательство пишущей программы)
http://vk.com/clickermann?z=video-14410794_171402933%2Fvideos-14410794
#name "solo"
// Author: Vint
// Version: 0.1.0 (04.02.2015)
// Скрипт для Clickermann v4.11 002
#logfile
$c = 4570476
$error = 0
MOVE($_xmax,0)
WAITMS(50)
GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "keyb.bmp")
$vX = $_return1-12
$vY = $_return2+23
$sh1_x = $vX + 50
$sh1_y = $vY + 139
$sh2_x = $vX + 510
$sh2_y = $vY + 139
$cl1_x = $vX + 40
$cl1_y = $vY + 179
$cl2_x = $vX + 530
$cl2_y = $vY + 179
$sp1_x = $vX + 212
$sp1_y = $vY + 179
$sp2_x = $vX + 330
$sp2_y = $vY + 179
$back_x = $vX + 512
$back_y = $vY + 18
ELSE
LOGWRITE ("Клавиатура не найдена")
HINTPOPUP("Клавиатура не найдена", "Стоп")
HALT
END_IF
STRSEPARATE("192,49,50,51,52,53,54,55,56,57,48,189,187", ",", $row1_arr)
STRSEPARATE("9,81,87,69,82,84,89,85,73,79,80,219,221,111", ",", $row2_arr)
STRSEPARATE("20,65,83,68,70,71,72,74,75,76,186,222,13", ",", $row3_arr)
STRSEPARATE("90,88,67,86,66,78,77,188,190,191", ",", $row4_arr)
LCLICK($vX+723,$vY-51)
WAITMS(300)
WHILE(1)
$shift = 0
$ctrl = 0
$key = 0
GETSCREEN($vX,$vY,$vX+574,$vY+199)
IF((PXL($sh1_x,$sh1_y) = $c) | (PXL($sh2_x,$sh2_y) = $c))
KEYDOWN(#SHIFT)
$shift = 1
END_IF
IF((PXL($cl1_x,$cl1_y) = $c) | (PXL($cl2_x,$cl2_y) = $c))
KEYDOWN(#CTRL)
$ctrl = 1
END_IF
IF((PXL($sp1_x,$sp1_y) = $c) | (PXL($sp2_x,$sp2_y) = $c))
KEYPRESS(#SPACE)
$key = 1
WAITMS(30)
ELSE
IF(PXL($back_x,$back_y) = 2237183)
KEYPRESS(#BACKSPACE)
$key = 1
INC($error)
LOGWRITE ("Ошибка набора!")
HINTPOPUP(" ", "Ошибка набора!")
END_IF
END_IF
// ряд 1
IF($key = 0)
$stx = $vX + 22
FOR($i=0, $i < 13)
IF(PXL(39*$i+$stx,$vY+18) = $c)
KEYPRESS($row1_arr[$i])
LOGWRITE ("кн ", $row1_arr[$i])
HINTPOPUP(" ", $row1_arr[$i])
$key = 1
$i = 100
END_IF
END_CYC
END_IF
// ряд 2
IF($key = 0)
$stx = $vX + 40
FOR($i=0, $i < 14)
IF(PXL(39*$i+$stx,$vY+58) = $c)
KEYPRESS($row2_arr[$i])
LOGWRITE ("кн ", $row1_arr[$i])
HINTPOPUP(" ", $row1_arr[$i])
$key = 1
$i = 100
END_IF
END_CYC
END_IF
// ряд 3
IF($key = 0)
$stx = $vX + 51
FOR($i=0, $i < 13)
IF(PXL(39*$i+$stx,$vY+98) = $c)
KEYPRESS($row3_arr[$i])
LOGWRITE ("кн ", $row1_arr[$i])
HINTPOPUP(" ", $row1_arr[$i])
$key = 1
$i = 100
END_IF
END_CYC
END_IF
// ряд 4
IF($key = 0)
$stx = $vX + 95 + 22
FOR($i=0, $i < 10)
IF(PXL(39*$i+$stx,$vY+138) = $c)
KEYPRESS($row4_arr[$i])
LOGWRITE ("кн ", $row1_arr[$i])
HINTPOPUP(" ", $row1_arr[$i])
$key = 1
$i = 100
END_IF
END_CYC
END_IF
IF($shift = 1)
KEYUP(#SHIFT)
END_IF
IF($ctrl = 1)
KEYUP(#CTRL)
END_IF
WAITMS(80)
END_CYC
HALT
[/spoiler]
-
с помощью экранной клавиатуры. :D
но всё дело уперлось в обновление подсветки нужной клавиши. как я с задержками не игрался, дальше скорости в 700-750(незнаю в чем там расчет) я не разогнался.
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100)
$xb=$_return1
$yb=$_return2
WAITMS(100)
END_IF
WNDPOS (wndfind("Экранная клавиатура"),$xb-19,$yb+234)
WNDSIZE (wndfind("Экранная клавиатура"),962, 239)
WAITMS(500)
LCLICK($xb+3,$yb+3)
waitms(500)
LCLICK($xb+100,$yb-50)
WHILE(1)
GETSCREEN($xb-10,$yb+25,$xb+569,$yb+228)
IF_PIXEL_IN($xb-10,$yb+25,$xb+569,$yb+228, 4570476)
$xkey=$_return1
$ykey=$_return2
IF((pxl($xb+50,$yb+170)=4570476)|(pxl($xb+500,$yb+170)=4570476))
LCLICK($xb+22,$yb+400)
END_IF
//первый ряд
IF($ykey=$yb+29)
LCLICK($xkey+77,$ykey+253)
else
//второй ряд
IF($ykey=$yb+69)
LCLICK($xkey+36,$ykey+253)
else
//третий ряд
IF($ykey=$yb+109)
LCLICK($xkey+46,$ykey+253)
else
//четвертый ряд
IF($ykey=$yb+149)
LCLICK($xkey+34,$ykey+253)
else
//пятый, пробел
IF($ykey=$yb+190)
LCLICK($xkey,$ykey+253)
END_IF
END_IF
END_IF
END_IF
END_IF
waitms(60)
else
IF(pxl($xb+500,$yb+50)=2237183)
LCLICK($xb+580,$yb+280)
print("ошибка")
waitms(60)
else
waitms(60)
GETSCREEN($xb-10,$yb+25,$xb+569,$yb+228)
IF_PIXEL_IN($xb-10,$yb+25,$xb+569,$yb+228, 4570476)
else
print("всё")
halt
END_IF
END_IF
END_IF
END_CYC
в экранной клавиатуре нужно включить нумпад в параметрах, чтобы кнопки можно было зделать примерно такогоже размера как и в вкприложении.
настроено под вин7 аэро тему.
скрипт в работе:
https://www.youtube.com/watch?v=Y6Q0H-jx9Io