2
« on: December 08, 2014, 12:16:29 PM »
Помогите понять почему скрипт у автора работает - а у меня только кликает, лог не пишет:// RECORDED SCRIPT 28.05.2014
// Для разрешения экрана компьютера 1680х1050
$K_SPEED = 4 // Delay multiplier
//Хеши цифр первого разряда числа кварков
DEFINE ($vr10, 2715852528)//0 - после последнего обновления часто выскакивает два варианта хеша для нуля, второй ниже
DEFINE ($vr101,4134216449)//0
DEFINE ($vr11, 4233420061)//1
DEFINE ($vr12, 3195316424)//2
DEFINE ($vr13, 111095598)//3
DEFINE ($vr14, 3079440038)//4
DEFINE ($vr15, 590185096)//5
DEFINE ($vr16, 368968172)//6
DEFINE ($vr17, 726060838)//7
DEFINE ($vr18, 4041836428)//8
DEFINE ($vr19, 2752899890)//9
//Хеши цифр второго разряда числа кварков
DEFINE ($vr2null, 1713262559)//пусто - аналогично как с нулем, два варианта хеша когда второй разряд пустой, пока не разбирался почему, оставил как есть
DEFINE ($vr2null1,2465824310)//пусто
DEFINE ($vr20, 2797621595)//0
DEFINE ($vr21, 4037892510)//1
DEFINE ($vr22, 2179048609)//2
DEFINE ($vr23, 3154207077)//3
DEFINE ($vr24, 92006811)//4
DEFINE ($vr25, 2132631788)//5
DEFINE ($vr26, 1012841208)//6
DEFINE ($vr27, 1827020787)//7
DEFINE ($vr28, 2690302123)//8
DEFINE ($vr29, 1938025917)//9
DEFINE ($vdigi, 0)//число кварков
DEFINE ($vr1, 0)//Цифра разряда 1
DEFINE ($vr2, 0)//Цифра разряд 2
DEFINE ($var111, 2507749838) // Хеш сообщения об отсутствии кубитов
DEFINE ($vttt, 0) //Количество нулевых сборов
//// Раздел объявления подпрограмм
//Подпрограмма считывания хешей числа
sub(getcount)
GETSCREEN // снимок экрана
// Считать хеш первого разряда
$count1 = PXLCRC (686,649, 699, 664)
// logwrite("R1: ", $count1)
// print($count1)
// Считать хеш второго разряда
$count2 = PXLCRC (700,649, 713, 664)
// logwrite("R2: ", $count2)
// print($count2)
end_sub
//Подпрограмма преобразование из хешей в число
sub(digi)
$vr1 = 0
$vr2 = 0
// Первый разряд
IF ($count1 = $vr10)
$vr1 = 0
END_IF
IF ($count1 = $vr101)
$vr1 = 0
END_IF
IF ($count1 = $vr11)
$vr1 = 1
END_IF
IF ($count1 = $vr12)
$vr1 = 2
END_IF
IF ($count1 = $vr13)
$vr1 = 3
END_IF
IF ($count1 = $vr14)
$vr1 = 4
END_IF
IF ($count1 = $vr15)
$vr1 = 5
END_IF
IF ($count1 = $vr16)
$vr1 = 6
END_IF
IF ($count1 = $vr17)
$vr1 = 7
END_IF
IF ($count1 = $vr18)
$vr1 = 8
END_IF
IF ($count1 = $vr19)
$vr1 = 9
END_IF
// Второй разряд
IF ($count2 = $vr20)
$vr2 = 0
END_IF
IF ($count2 = $vr21)
$vr2 = 1
END_IF
IF ($count2 = $vr22)
$vr2 = 2
END_IF
IF ($count2 = $vr23)
$vr2 = 3
END_IF
IF ($count2 = $vr24)
$vr2 = 4
END_IF
IF ($count2 = $vr25)
$vr2 = 5
END_IF
IF ($count2 = $vr26)
$vr2 = 6
END_IF
IF ($count2 = $vr27)
$vr2 = 7
END_IF
IF ($count2 = $vr28)
$vr2 = 8
END_IF
IF ($count2 = $vr29)
$vr2 = 9
END_IF
// logwrite("vr1: ", $vr1)
// logwrite("vr2: ", $vr2)
IF ( ($count2 = $vr2null) | ($count2 = $vr2null1) )
$vdigi = $vr1
else
$vdigi = $vr1*10+$vr2
END_IF
// Добавил вывод когда число не определилось, скрипт при этом останавливается и можно поправить соответствующие переменные
IF ( ($vdigi = 0) | ($vr1 = 0) | (($vr2 = 0)&($count2 ! $vr2null)&($count2 ! $vr2null1)&($count2 ! $vr20))
logwrite("Unknow digit!")
logwrite("--------------")
logwrite("vdigi :", $vdigi)
logwrite("vr1 :", $vr1)
logwrite("vr2 :", $vr2)
logwrite("count1:", $count1)
logwrite("count2:", $count2)
logwrite("--------------")
HALT
END_IF
logwrite("Цифра: ", $vdigi)
end_sub
//Подпрограмма проверки на сообщение об отсутствии кубитов
sub(verifyend)
//Если нет кубитов то СТОП
GETSCREEN // снимок экрана
$count111 = PXLCRC (515,265, 800, 300)
logwrite("Hash cubit ", $count111)
IF($count111 = $var111 )
logwrite("STOP: ", $count111)
HALT
END_IF
end_sub
//// Конец раздела объявления подпрограмм
//// Основное тело скрипта
wndpos( wndfind("BlueStacks App Player"), 0, 0) // перемещяем окно в угол
LOGSHOW (1, 1300, 650) // Включение окна лога с указанной позиции, в данном случае с 1300х650
//Включение
WAIT(5)
LCLICK(475, 655)
WAIT(2)
gosub(verifyend) // Это вызывается подпрограмма проверки на сообщение об отсутствии кубитов
gosub(getcount) // Вызов подпрограммы считывания хешей числа
gosub(digi) // Вызов подпрограммы преобразование из хешей в число на выходе в переменной $vdigi распознанное число
//Условие если кварков 0 то сбор если не 0 то пошла зарядка
IF($vdigi = 0 )
inc($vttt)
else
$vttt = 0 // Сброс счетчика нулевых попыток получить кварк (когда после включения число кварков равно нулю)
$delta = 0 // Сброс порогового значения искомого числа кварков, если равно нулю, то ищем 15
skip:
//условие на зарядку значения меньше 15
IF ($vdigi < 15+$delta)
LCLICK(1189, 441) //Зарядка 1
WAIT(2) //пауза 2 сек
gosub(verifyend) // Вызов соответсвующей подпрограммы (см. выше)
gosub(getcount) // Аналогично
gosub(digi) // Аналогично
goto(skip)
END_IF
IF (($vdigi > 15) & ($delta = 0)) // Если обнаруживаем, что число больше 15, значит у нас больше, чем одна лампа, увеличиваем пороговое значение на 10
$delta = 10
goto(skip)
END_IF
IF (($vdigi > 30) & ($delta = 10)) // Если обнаруживаем, что число больше 30, значит у нас больше, чем две лампы лампа, увеличиваем пороговое значение на 20
$delta = 20
goto(skip)
END_IF
WAIT(1)
END_IF
// сбор
WAIT(1)
LCLICK(641, 668)
// Если пять раз подряд не было кварков, то щелкаем по вкладкам, часто помогает
if ( $vttt > 5)
WAIT(3)
LCLICK(135, 90) //выбор Командиры
WAIT( RND(1,5) )
LCLICK(573, 90) //выбор Принятые
WAIT( RND(2,3) )
LCLICK(299, 90) //выбор энергия
$vttt = 0
WAIT( RND(1,3) )
END_IF
// Останов при нажатом пробеле
if ( iskeydown(#space)=1 )
logwrite("space!")
HALT
END_IF
// Останов при при изменении первого разряда цифры 200, если требуется слить не весь кубит - сейчас отключено,
// что бы заработал надо со следующей позиции убрать в начале строки все двойные слэши и найти хеш требуемой цифры кубита, у меня проверяется только одна цифра
//GETSCREEN // снимок экрана
//$count222 = PXLCRC (202,170, 212, 184)
//$var222 = 86170936
//if ( $count222 ! $var222 )
// WAIT(RND(7,15))
// GETSCREEN // снимок экрана
// $count222 = PXLCRC (202,170, 213, 185)
// if ( $count222 ! $var222 )
// WAIT(RND(7,15))
// GETSCREEN // снимок экрана
// $count222 = PXLCRC (202,170, 212, 184)
// if ( $count222 ! $var222 )
// logwrite("не 200, СТОП ", $count222)
// HALT
// END_IF
// END_IF
//END_IF
//// Конец скрипта, по умолчанию когда скрипт доходит до этого места, то переходит на начало скрипта и отрабатывает все по новой
v4.11, 4.10 (у автора) лог ошибок пуст.
почему-то под "sub" не пишет лог PXLCRC