Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Полуночник on July 30, 2014, 09:34:18 PM
-
Может конечно что то я в скрипте напортачил. Он работает, но время от времени случаются ошибки выполнения.
Скрипт для чистки почты в игре Гнев Богов:
[spoiler]
// почта
// Автор: Полуночник
// Версия: 15.3 (30.07.2014)
A:
HINTPOPUP("Чищу почту")
LCLICK(95,85)
$r1 = 467
$r2 = 344
$r3 = $r1+10
$r4 = $r2+10
GOSUB(Per)
$b1=0
WHILE($b1=0)
$r1 = 467
WAIT(1)
GOSUB(Per)
GETSCREEN
if_pixel_in(870, 300, 900, 550, 1339325)
LCLICK($_return1+10, $_return2+2)
WAIT(1)
GETSCREEN
if_pixel_in(1045, 555, 1065, 575, 2286590)
else
LCLICK(1070, 540)
$b2=0
WHILE($b2=0)
WAITMC(500)
GETSCREEN
IF_PIXEL_IN(815,340, 830, 360, 8901117)
$b2 = 1
END_IF
END_CYC
KEYPRESS(#ENTER)
WAIT(1)
GOSUB (Per)
goto(D)
end_if
WHILE($r1<705)
IF_PIXEL_IN($r1,$r2, $r3,$r4, 3158058)
$j = $_return1
$j2 = $_return2
WAITMS(500)
LCLICK(925,560)
LDOWN(920,564)
WAITMS(RND(700,900))
MOVE($j,$j2)
WAITMS(500)
LUP($j,$j2)
LCLICK(800,10)
KEYPRESS(#ENTER)
GOSUB (Per)
$r1 = 706
else
INC($r1,53)
INC($r3,53)
WAITMS(100)
IF($r1 = 732)
INC($r2,53)
INC($r4,53)
$r1 = 467
$r3 = $r1+10
WAITMS(100)
IF($r2>556)
$r1 = 706
$b1=1
END_IF
END_IF
END_IF
END_CYC
else
LCLICK(35,85)
HINTPOPUP("нет писем")
halt
end_if
D:
END_CYC
lClick(1399,58)
waitms(300)
lClick(131,550)
waitms(300)
$b = 0
WHILE($b = 0)
WAIT(1)
GETSCREEN
if_pixel_in(170, 550, 171, 551, 16053492)
else
$b = 1
END_IF
END_CYC
lClick(212,116)
goto(A)
SUB(Per)
$b = 0
WHILE($b = 0)
WAIT(1)
GETSCREEN
if_pixel_in(820, 387, 821, 388, 9935251)
$b = 1
END_IF
END_CYC
END_SUB
[/spoiler]
Ошибки бывают разные. Чаще всего встречается не выполнение участка кода
[spoiler]
else
INC($r1,53)
INC($r3,53)
WHILE($r1 = 732)
INC($r2,53)
INC($r4,53)
$r1 = 467
$r3 = $r1+10
IF($r2>556)
$r1 = 706
$b1=1
END_IF
END_CYC
END_IF
[/spoiler]
но бывает что скрипт работает норм, а потом с 25 или 46, да неважно с какой строки просто перескакивает на 69 строку, на участок кода
[spoiler] LCLICK(35,85) ---- 69 строка
HINTPOPUP("нет писем")
halt
end_if
[/spoiler]
Обьясните плииз в чём может быть заковырка?
-
Цикл WHILE($r1 = 732) выполнится только если условие будет верным, в противном случае код будет пропущен. А если он и выполнится внутри цикла сразу же встречается $r1 = 467. То есть больше одной итерации по любому не будет! Вопрос, зачем там вообще цикл?
-
Цикл WHILE($r1 = 732) выполнится только если условие будет верным, в противном случае код будет пропущен. А если он и выполнится внутри цикла сразу же встречается $r1 = 467. То есть больше одной итерации по любому не будет! Вопрос, зачем там вообще цикл?
Хм..... да... наверное он теперь и не нужен... я его брал из старого скрипта. Сейчас правильнее будет вместо цикла сделать сравнение наверное. Сча покувыряемся))
Покувырялся.... Изменил тот участок кода. WHILE на IF. Праблы остались теже.... или не срабатывает участок кода тот же или так же перескакивает в конец скрипта((((
-
Решил сделать запись лога... получилось следующее:
заданы переменные:
$r1 = 467
$r2 = 344
$r3 = $r1+10
$r4 = $r2+10
цикл:
WHILE($r2<556)
действия:
else
print("занято, прибавляю")
print("в начале r1:", $r1)
INC($r1,53)
$r3 = $r1+10
print("сейчас r1:", $r1)
IF($r1 = 732)
INC($r2,53)
$r4 = $r2+10
print("сейчас r2", $r2)
$r1 = 467
END_IF
и вот что в логе нахожу:
1:22:27 занято, прибавляю
1:22:27 в начале r1:626
1:22:27 сейчас r1:679
1:22:27 занято, прибавляю
1:22:27 в начале r1:679
1:22:27 сейчас r1:732
1:22:27 место свободно тут r1:648 ----- НУ ОТКУДА 648 появилось??????????? если по условиям должен искать в координатах от 626 до 3-636, потом 679*689 а в координатах 648 вообще не должен искать????????
я в шоке
-
Короче я так и не понял что это за глюк был((( порядка 20 раз переделывал скрипт.... сейчас всё вернул как было при глюке.... вот только глюка больше нет..... откуда взялся? как куда пропал? теперь уже не понять....
Рано радовался... глюк не пропал(((( Оставил выполнение скрипта на ночь. Утром проснулся и наблюдал что скрипт стоит в ступоре из -за глюка того же.
Вот скрипт в каком виде сейчас:
[spoiler]
// почта
// Автор: Полуночник
// Версия: 15.5 (30.07.2014)
A:
HINTPOPUP("Чищу почту")
LCLICK(95,85)
WAIT(4)
$r1 = 467
$r2 = 352
$r3 = $r1+10
$r4 = $r2+10
GOSUB(Per)
WHILE($r2<564)
WAITMS(200)
GOSUB(Per)
GETSCREEN
if_pixel_in(870, 300, 900, 550, 1339325)
LCLICK($_return1+10, $_return2+2)
WAITMS(300)
GETSCREEN
if_pixel_in(1045, 555, 1065, 575, 2286590)
else
LCLICK(1070, 540)
$b2=0
WHILE($b2=0)
WAITMC(300)
GETSCREEN
IF_PIXEL_IN(815,340, 830, 360, 8901117)
$b2 = 1
END_IF
END_CYC
KEYPRESS(#ENTER)
WAITMS(200)
GOSUB (Per)
goto(D)
end_if
WAITMS(200)
E:
IF_PIXEL_IN($r1,$r2, $r3,$r4, 3158058)
$j = $_return1
$j2 = $_return2
WAITMS(300)
LCLICK(925,560)
LDOWN(920,564)
WAITMS(700)
MOVE($j,$j2)
WAITMS(500)
LUP($j,$j2)
LCLICK(800,10)
WAITMS(200)
KEYPRESS(#ENTER)
GOSUB (Per)
else
INC($r1,53)
$r3 = $r1+10
WAITMS(100)
IF($r1 = 732)
INC($r2,53)
$r4 = $r2+10
$r1 = 467
WAITMS(100)
END_IF
IF($r2 = 564)
goto(D)
END_IF
goto(E)
END_IF
else
LCLICK(35,85)
HINTPOPUP("нет писем")
halt
end_if
D:
END_CYC
lClick(1399,58)
waitms(300)
lClick(131,550)
waitms(300)
$b = 0
WHILE($b = 0)
WAIT(1)
GETSCREEN
if_pixel_in(170, 550, 171, 551, 16053492)
else
$b = 1
END_IF
END_CYC
lClick(212,116)
goto(A)
SUB(Per)
$b = 0
WHILE($b = 0)
WAIT(1)
GETSCREEN
if_pixel_in(820, 387, 821, 388, 9935251)
$b = 1
END_IF
END_CYC
END_SUB
[/spoiler]
По прежнему участок кода
else
INC($r1,53)
$r3 = $r1+10
WAITMS(100)
IF($r1 = 732)
INC($r2,53)
$r4 = $r2+10
$r1 = 467
WAITMS(100)
END_IF
IF($r2 = 564)
goto(D)
END_IF
goto(E)
END_IF
else
даёт сбои и выдаёт непонятные результаты время от времени. Может минут 5 нормально проработать, а может каждые 30 сек лагать((((
-
Ты забыл про $r3.
Где-то 61 строкой должно быть
$r3 = $r1+10
Как я понимаю ты двигаешься по рядам сканируя ячейки. Вот при переходе на новую строку ты забываешь про правую границу и начиная со строки 2 он ищет не по ячейкам, а по всей строке. Ну и вероятно пытается обработать больше 1 раза одно место.
И ещё проверь все буквы в строке 26 "WAITMC(300)"
-
Ты забыл про $r3.
Где-то 61 строкой должно быть
Vint спасибо. Ты прав. Из-за отсутствия $r3 в 61 строке все праблы. 1.5 часа после исправления - полёт нормальный))))
И ещё проверь все буквы в строке 26 "WAITMC(300)"
Не, тут всё норм.
-
Не, тут всё норм.
Не нормально. Прочитай по буквам.
-
Не, тут всё норм.
Не нормально. Прочитай по буквам.
намальна намальна я твая панимать =)
-
Да я понял о чём)) Просто сам уже давно исправил))