Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: kostya1234599 on July 16, 2014, 10:40:08 PM
-
как править этот код чтобы работал нормально
GETSCREEN
IF_PIXEL_IN (1197,43, 1197, 43, 14406087) //Этот иф не правильно работает. Он должен запускаться только если в точке есть нужного цвета пиксель, а он всё-равно включается.
WAIT(1)
DEFINE ($A, [0])
DEFINE ($B, [0])
GETSCREEN //1
IF_PIXEL_IN(1106,287,1106,287, 10446592)
$B=$B+1
END_IF
GETSCREEN //2
IF_PIXEL_IN(1131,287,1131,287, 10446592)
$B=$B+1
END_IF
GETSCREEN //3
IF_PIXEL_IN(1156, 287, 1156, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN //4
IF_PIXEL_IN(1181, 287, 1181, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN //5
IF_PIXEL_IN(1222, 287, 1222, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN //6
IF_PIXEL_IN(1249, 287, 1249, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN //7
IF_PIXEL_IN(1276, 287, 1276, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN //8
IF_PIXEL_IN(1303, 287, 1303, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN //9
IF_PIXEL_IN(1331, 287, 1331, 287, 10446592)
$B=$B+1
END_IF
$A=$B //во время работы тут ошибку указывает
IF($B = $A)
#ps2_keyboard
KEYPRESS(#F2)
ELSE
IF($B>$A)
#ps2_keyboard
KEYPRESS(#F3)
ELSE
#ps2_keyboard
KEYPRESS(#F2)
END_IF
GETSCREEN
ELSE
END_IF
-
Кто ж тя так кодить учил? Чувствуется какой нибудь Оупилот... :D
Вот верный вариант:
Как я понял тебе нужно определить цвет в заданной точке, и если сошелся определить цвета еще в девяти точках. Если сошлись цвета в любой из девяти точек то нажать F3 а если нет то F2.
#ps2_keyboard или #ps2_mouse - нужно написать только один раз в начале скрипта, это включит альтернативный режим нажатий клавиш.
#ps2_keyboard
GETSCREEN
IF(PXL(1197,43) = 14406087)
WAIT(1)
GETSCREEN
IF((PXL(1106,287) = 10446592)|(PXL(1131,287) = 10446592)|(PXL(1156, 287) = 10446592)|(PXL(1181, 287) = 10446592)|(PXL(1222, 287) = 10446592)|(PXL(1249, 287) = 10446592)|(PXL(1276, 287) = 10446592)|(PXL(1303, 287) = 10446592)|(PXL(1331, 287) = 10446592))
KEYPRESS(#F3)
WAITMS(100)
ELSE
KEYPRESS(#F2)
WAITMS(100)
END_IF
END_IF
WAITMS(50)
-
с Ф2 и Ф3 немножко сложнее, 9 точек вдоль синей линии (заполненной не полностью) если линия стала больше чем была то Ф3 если нет то Ф2. Инкриминировать переменную $B необходимо, к тому же по отдельности.
И ещё как инкриминировать $B передать это значение $A и чтобы $A сбрасывалось на 1 цикл позже, что бы по А можно было проверять как изменилась полоска
-
Пиксельный бот для рыбалки самому делать это жуть, тем более на Lineage 2. Это не uoPilot это C++ и Pascal на мне так сказались)
-
Ещё намекну про точки, только что в голову пришло.
изначально точек 5 примерно (полоска ХП рыбы и ловля рыбы начинаются так)
для ловли рыбы 2 действия (тянуть и подсекать)
и 2 ситуации
Если в ситуацию 1 нажать подходящее действие 1 (скажем тянуть) то ХП рыбы уменьшается, следовательно точек стало меньше, и мы сделали правильно и если действие не изменилось то можно продолжать нажимать действие 1 (с проверкой этих 9 точек), а если ситуация поменялась, мы использовали не подходящее действие 1 (тянуть) к ситуации 2 следовательно ХП рыбы увеличилось,а тогда и количество точек увеличится, значит нужно поменять действие. Думаю теперь понятно)
При необходимости для точности можно увеличить количество точек на этой проверочной полосе (её длинна 225 пикселей, но ХП начинается чуть правее середины)
-
Может полоску легче будет считать специальной функцией подсчета пикселов?
$count = PXLCOUNT (10,20, 100, 40, 255) // подсчет в заданной области количества заданного цвета и возвращение числа в переменную
-
Как то так но про PXLCOUNT подумай.
Верно писать так
DEFINE ($A, 0)
DEFINE ($B, 0)
Но в данном скрипте это не нужно вообще.
GETSCREEN
IF_PIXEL_IN (1197,43, 1197, 43, 14406087) //Этот иф не правильно работает. Он должен запускаться только если в точке есть нужного цвета пиксель, а он всё-равно включается.
WAIT(1)
GETSCREEN //1
IF_PIXEL_IN(1106,287,1106,287, 10446592)
$B=$B+1
END_IF
//2
IF_PIXEL_IN(1131,287,1131,287, 10446592)
$B=$B+1
END_IF
//3
IF_PIXEL_IN(1156, 287, 1156, 287, 10446592)
$B=$B+1
END_IF
//4
IF_PIXEL_IN(1181, 287, 1181, 287, 10446592)
$B=$B+1
END_IF
//5
IF_PIXEL_IN(1222, 287, 1222, 287, 10446592)
$B=$B+1
END_IF
//6
IF_PIXEL_IN(1249, 287, 1249, 287, 10446592)
$B=$B+1
END_IF
//7
IF_PIXEL_IN(1276, 287, 1276, 287, 10446592)
$B=$B+1
END_IF
//8
IF_PIXEL_IN(1303, 287, 1303, 287, 10446592)
$B=$B+1
END_IF
//9
IF_PIXEL_IN(1331, 287, 1331, 287, 10446592)
$B=$B+1
END_IF
$A=$B //во время работы тут ошибку указывает
IF($B = $A)
#ps2_keyboard
KEYPRESS(#F2)
ELSE
IF($B>$A)
#ps2_keyboard
KEYPRESS(#F3)
ELSE
#ps2_keyboard
KEYPRESS(#F2)
END_IF
END_IF
END_IF
WAITMS(50)
-
PXLCOUNT это мне очень пригодится, не подумал про это, но всё же вернусь к вопросу, почему в моём макросе, при не выполнении условия выполнилось действие?
Переработаю макрос относительно новых данных, наверное уже днём предложу новый вариант(корректированный), но от вопроса не отказываюсь, необходимо знать почему так произошло. Спасибо за понимание ;)
-
Каждый IF должен завершаться своим END_IF и в каждом условии может быть одна альтернатива ELSE. А у тебя там путаница.
-
Спасибо, это дало разъяснение)
Новый вопрос, у меня ступор в определении ( я уже описал как увеличивается или уменьшается полоска ХП рыбы). Я подсчитал сколько пикселей цвета ХП рыбы (синего) и сколько не заполненного (почти чёрный). Как мне записывать данные о "измерении" синей полоски так, чтобы можно было использовать их после следующего измерения для понимания как изменилась длинна полосы. Или как мне задействовать одно пробное действие перед "инициализацией"( перед тем как давать программе "осознанно" нажимать кнопки) ?
-
Пока что новый код ( недоделанный ) вот такой:
Вместо "х" и "у" будут реальные числа.
#ps2_keyboard
GETSCREEN
IF(PXL(x,y) = 14406087) //проверка на появление окна рыбалки
WHILE(PXL(x,y) = 14406087) //повтор цикла проверки и ловли до тех пор пока окно не закроется, т.е. пока рыбу не поймаю
WAIT(1)
M1:
GETSCREEN
IF(PXL(x-91,y+244) = 10446592) //проверка на появление полоски
GETSCREEN
$Blue=PXLCOUNT(x-91,y+244,x+134,y+244,10446592)
$Black=PXLCOUNT(x-91,y+244,x+134,y+244,14406087)
//сюда нужно придумать то на чём я застопорился
ELSE
WAIT(1) //ждать 1 сек если полоска не появилась и начать заново проверку полоски
GOTO(M1)
END_IF
END_CYC
ELSE
// проверка на наличие спец. NPC Русалки (её можно поймать, плюшки даёт)
//взять награду
//закинуть удочку(т.к. закинул удочку то выполняется первый IF и рыбалка продолжается)
END_IF
Что скажешь на этот раз? :)
-
Наверное так
IF($Blue = $Blue2)
// действие если не изменилась
ELSE
$Blue2 = $Blue
// действие если зменилась
END_IF
-
не совсем, если бы полоска увеличивалась только от действий и т.д. то это подошло бы, но она ещё увеличивается каждую секунду примерно на миллиметр, что сложнее.
справился с действием от которого нужно отталкиваться, и дореализовал IF внешний, осталось к нему ELSE реализовать (он в логическом виде пока на бумаге) вот код:
#ps2_keyboard
DEFINE ($C, 0)
GETSCREEN
IF(PXL(x,y) = 14406087) //проверка на появление окна рыбалки
M1:
GETSCREEN
IF(PXL(x-91,y+244) = 10446592) //проверка на появление полоски
M2:
GETSCREEN
$Blue=PXLCOUNT(x-91,y+244,x+134,y+244,10446592)
WAIT(1)
IF($C != 1) // тот самый IF который делает 1 действие, от которого начинается проверка состояния поплавка по полоске
$C=$C+1
$A=$Blue
KEYPRESS(#F2)
GOTO(M2)
ELSE
GOTO(M3)
END_IF
M3:
IF($A>$Blue)
WAITMS(500)
$A=$Blue
KEYPRESS(#F2)
GOTO(M2)
ELSE
WAITMS(500)
$A=$Blue
KEYPRESS(#F3)
GOTO(M4)
END_IF
M4:
GETSCREEN
$Blue=PXLCOUNT(x-91,y+244,x+134,y+244,10446592)
WAIT(1)
IF($A<$Blue)
WAITMS(500)
$A=$Blue
KEYPRESS(#F2)
GOTO(M2)
ELSE
WAITMS(500)
$A=$Blue
KEYPRESS(#F3)
GOTO(M4)
END_IF
ELSE
WAIT(1) //ждать 1 сек если полоска не появилась и начать заново проверку полоски
GOTO(M1)
END_IF
ELSE
IF(PXL(x1,y1) = цв. русалки)
WAITMS(10)
KEYSTRING("/target ")
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING("jkjnfz")
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING("ecfkrf")
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
KEYSTRING("/target ")
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING("jkjnfz")
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING("ecfkrf")
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER) //набрать в чат "/target Золотая Русалка" 2 раза, учитывая смену языков. (во время работы макроса должен быть включёнными русский язык)
LCLICK(x2,y2) //взять награду
LCLICK(x3,y3) //закрыть окно русалки
KEYPRESS(#F1)
GOTO(M2)
ELSE
KEYPRESS(#F1)
GOTO(M2)
END_IF
END_IF
с координатами разберусь потом, напишу на С++ прогу чтобы создавала этот код в txt с нужными координатами.
Похоже что я доделал этот макрос , не считая вычисления координат, так ведь?
-
Посмотри пожалуйста сообщение выше, и прокомментируй, спасибо ^^ .
-
IF($C != 1) Тут либо равно "=" либо неравно "!"но не все сразу же!
Зачем писать эти ГОТО если скрипт и так туда пойдет? Бессмысленно...
GOTO(M3)
END_IF
M3:
-
"!=" - это в С++ логическое "не равно" так и знал, что напартачил))
GOTO написал для себя) , это ведь не мешает выполнению программы?)
Ещё 1 вопрос:
У меня мышь х7 на ней 5 клавиш, как послать нажатие на одну из кнопок которые не правая и не левая кнопки мыши?
-
Ну как же ты пошлешь нажатия на аппаратные кнопки устройства???
-
Должен быть способ, но не в clikermann. Например в кликермэне я нажму кнопку "m" а эта кнопка будет выполнять функцию кнопки на мышке.
-
А зачем запрягать мышь если кликер может делать тоже самое?
-
Если бы всё так просто было)) Фрост в режиме пс2 не пускает клики, но пускает MOVE(x,y) без пс2 мове не работает, мне отается только сделать так, потому что оскар эдитор х7 фрост не трогает и клик нормально доходит до клиента.
Сейчас только одна проблема - как это реализовать
-
Пока что дошёл до этого, вроде бы это финальная часть кода, осталось написать программу С++ которая пишет этот код в .txt с координатами х, х1, у, у1 которые буду вводить с клавиатуры.
#ps2_keyboard
#ps2_mouse
M5:
DEFINE ($C, 0)
GETSCREEN
IF(PXL(x,y) = 14406087) //проверка на появление окна рыбалки
M1:
GETSCREEN
IF(PXL(x-91,y+244) = 10446592) //проверка на появление полоски
M2:
GETSCREEN
$Blue=PXLCOUNT(x-91,y+244,x+134,y+244,10446592)
WAIT(2)
IF($C ! 1) // тот самый IF который делает 1 действие, от которого начинается проверка состояния поплавка по полоске
$C=$C+1
$A=$Blue
KEYPRESS(#F2)
GOTO(M2)
ELSE
GOTO(M3)
END_IF
M3:
IF($A>$Blue)
WAITMS(500)
$A=$Blue
KEYPRESS(#F2)
GOTO(M2)
ELSE
WAITMS(500)
$A=$Blue
KEYPRESS(#F3)
GOTO(M4)
END_IF
M4:
GETSCREEN
$Blue=PXLCOUNT(x-91,y+244,x+134,y+244,10446592)
WAIT(2)
IF($A<$Blue)
WAITMS(500)
$A=$Blue
KEYPRESS(#F2)
GOTO(M2)
ELSE
WAITMS(500)
$A=$Blue
KEYPRESS(#F3)
GOTO(M4)
END_IF
ELSE
WAIT(1) //ждать 1 сек если полоска не появилась и начать заново проверку полоски
GOTO(M1)
END_IF
ELSE
GETSCREEN
IF(PXL(685,195) = 12377059)
WAITMS(10)
KEYSTRING("/target ")
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING("jkjnfz")
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING("ecfkrf")
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
KEYSTRING("/target ")
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING("jkjnfz")
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING("ecfkrf")
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER) //набрать в чат "/target Золотая Русалка" 2 раза, учитывая смену языков. (во время работы макроса должен быть включёнными русский язык)
WAITMS(500)
GETSCREEN
IF(PXL(x1,y1) = 13748415)
MOVE(x1-97,y1+132) //взять награду
// тут по идее должен быть клик, но его делает не кликермэн, а мышка х7.
WAITMS(500)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#F1)
GOTO(M5)
ELSE
KEYPRESS(#F1)
GOTO(M5)
END_IF
ELSE
KEYPRESS(#F1)
GOTO(M5)
END_IF
END_IF
-
В команде PXLCOUNT(x,y,x1,y1,цвет)
Можно ли указывать несколько цветов? полоска оказалось неоднородной))
-
Нет, но несложно догадаться что цифры можно складывать ;)
GETSCREEN
$a = PXLCOUNT(407,247, 465,312, 32768)
$a = $a+PXLCOUNT(407,247, 465,312, 14450804)
$a = $a+PXLCOUNT(407,247, 465,312, 16119285)
LOGWRITE ($a)
HALT
-
Спасибо) Пошёл править программу)) А то уже написал код в .ехе , а потом узнал что полоса не однородного цвета
-
Тестирую код на работоспособность, что-то не так, не могу понять, т.к. всегда нажимается F2, даже если нажимается ф2 и увеличивается полоска, то должно нажиматься ф3, а все равно нажимается ф2.
#ps2_keyboard
#ps2_mouse
M5:
DEFINE($C, 0)
GETSCREEN
IF(PXL(1197,43) = 14406087)
M1:
GETSCREEN
IF(PXL(1106,287) = 10118913)
M2:
GETSCREEN
IF(PXL(1197,43) = 14406087)
GETSCREEN
$Blue = PXLCOUNT(1106,287,1331,287, 10446592)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
IF($C !1)
$C = $C + 1
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
GOTO(M3)
END_IF
M3:
IF($A>$Blue) // что то в этом ифе, т.к. когда увеличивается полоска ($A<$Blue) должен нажиматься Ф3, но он не нажимается. Вот и ломаю голову.
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M4)
END_IF
ELSE
END_IF
M4:
GETSCREEN
IF(PXL(1197,43) = 14406087)
GETSCREEN
$Blue = PXLCOUNT(1106,287,1331,287, 10446592)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
IF($A<$Blue)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M4)
END_IF
ELSE
END_IF
ELSE
WAIT(1)
GOTO(M1)
END_IF
ELSE
GETSCREEN
IF(PXL(685, 195) = 12377059)
WAITMS(10)
KEYSTRING(/target)
KEYPRESS(32)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING(jkjnfz)
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING(ecfkrf)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
KEYSTRING(/target)
KEYPRESS(32)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING(jkjnfz)
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING(ecfkrf)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(500)
GETSCREEN
IF(PXL(1347,470) = 13748415)
MOVE(1250,602)
WAITMS(500)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#F1)
WAIT(3)
GOTO(M5)
ELSE
KEYPRESS(#F1)
WAIT(3)
GOTO(M5)
END_IF
ELSE
KEYPRESS(#F1)
WAIT(3)
GOTO(M5)
END_IF
END_IF
-
Строки всегда пиши в кавычках. Выкинул из скрипта лишнее и вставил запись в лог для отладки. Чтоб не гадать сам увидишь какие значения проскакивают в переменных. Параметр #logfile заставит кликер скидывать лог в файл в папку со скриптом.
#ps2_keyboard
#ps2_mouse
#logfile
GETSCREEN
IF(PXL(1197,43) = 14406087)
M1:
GETSCREEN
IF(PXL(1106,287) = 10118913)
M2:
GETSCREEN
IF(PXL(1197,43) = 14406087)
$Blue = PXLCOUNT(1106,287,1331,287, 10446592)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
IF($C!1)
$C = $C + 1
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
END_IF
IF($A>$Blue) // что то в этом ифе, т.к. когда увеличивается полоска ($A<$Blue) должен нажиматься Ф3, но он не нажимается. Вот и ломаю голову.
LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
END_IF
END_IF
M4:
GETSCREEN
IF(PXL(1197,43) = 14406087)
$Blue = PXLCOUNT(1106,287,1331,287, 10446592)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
IF($A<$Blue)
LOGWRITE ("F2 Blue 2 ", $Blue, " A2 ",$A)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
LOGWRITE ("F3 Blue 2 ", $Blue, " A2 ",$A)
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M4)
END_IF
END_IF
ELSE
WAIT(1)
GOTO(M1)
END_IF
ELSE
GETSCREEN
IF(PXL(685, 195) = 12377059)
WAITMS(10)
KEYSTRING("/target")
KEYPRESS(32)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING("jkjnfz")
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING("ecfkrf")
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
KEYSTRING("/target")
KEYPRESS(32)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING("jkjnfz")
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING("ecfkrf")
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(500)
GETSCREEN
IF(PXL(1347,470) = 13748415)
MOVE(1250,602)
WAITMS(500)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#F1)
WAIT(3)
ELSE
KEYPRESS(#F1)
WAIT(3)
END_IF
ELSE
KEYPRESS(#F1)
WAIT(3)
END_IF
END_IF
-
Я модифицировал код, (оказывается полоска меняет цвет на красный и нужно всё делать наоборот) и удалять GOTO в той версии кода может быть нужно было, но в этой нужно чтобы GOTO был на месте.
#ps2_keyboard
#ps2_mouse
#logfile
M5:
DEFINE($C, 0)
DEFINE($A, 0)
DEFINE($Blue, 0)
GETSCREEN
IF(PXL(1197,43) = 14406087) //проверка на окно рыбалки
M1:
GETSCREEN
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020) //проверка на полосу
M2:
GETSCREEN
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020))
IF(PXL(1104,287) = 7886082) // если полоса синяя
$Blue = PXLCOUNT(1106,287,1331,287, 10446592)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
IF($C ! 1)
$C = $C + 1
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
END_IF
IF($A>$Blue)
LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M4)
END_IF
ELSE //иначе
IF(PXL(1104,287) = 401020) //если красная
$Blue = PXLCOUNT(1106,287,1331,287, 468366)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468109)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468110)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468111)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468112)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468113)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468369)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468368)
IF($C ! 1)
$C = $C + 1
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
END_IF
IF($A>$Blue)
LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M4)
END_IF
ELSE
GOTO(M5)
END_IF
END_IF
ELSE
GOTO(M5)
END_IF
M4:
GETSCREEN
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020))
IF(PXL(1104,287) = 7886082)
$Blue = PXLCOUNT(1106,287,1331,287, 10446592)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
IF($A>$Blue)
LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M2)
ELSE
LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M4)
END_IF
ELSE
IF(PXL(1104,287) = 401020)
$Blue = PXLCOUNT(1106,287,1331,287, 468366)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468109)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468110)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468111)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468112)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468113)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468369)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468368)
IF($A>$Blue)
LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M2)
ELSE
LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M4)
END_IF
ELSE
GOTO(M5)
END_IF
END_IF
ELSE
GOTO(M5)
END_IF
ELSE
WAIT(1)
GOTO(M1)
END_IF
ELSE
IF(PXL(685, 195) = 12377059)
WAITMS(10)
KEYSTRING(/target)
KEYPRESS(32)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING(jkjnfz)
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING(ecfkrf)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
KEYSTRING(/target)
KEYPRESS(32)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING(jkjnfz)
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING(ecfkrf)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(500)
GETSCREEN
IF(PXL(1347,470) = 13748415)
MOVE(1250,602)
WAITMS(500)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#F1)
WAIT(3)
GOTO(M5)
ELSE
KEYPRESS(#F1)
WAIT(3)
GOTO(M5)
END_IF
ELSE
KEYPRESS(#F1)
WAIT(3)
GOTO(M5)
END_IF
END_IF
-
В общем подправил код, самый внешний иф (первая его половина) работает как часы, хотя и есть минусы. Берусь за решение того, что после вылова русалки ( ELSE самого внешнего ифа) он походу не видит пиксель, попробую разобраться, вот код, я не стал редактировать отступы
#ps2_keyboard
#ps2_mouse
#logfile
M5:
DEFINE($C, 0)
DEFINE($A, 0)
DEFINE($Blue, 0)
GETSCREEN
IF(PXL(1197,43) = 14406087) //ïðîâåðêà íà ïîÿâëåíèå îêíà ðûáàëêè
M1:
GETSCREEN
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020) //ïðîâåðêà íà ïîÿâëåíèå ïîëîñêè
M2:
GETSCREEN
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020))
IF(PXL(1104,287) = 7886082) // Åñëè ïîëîñà ñèíÿÿ
$Blue = PXLCOUNT(1106,287,1331,287, 10446592)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
IF($C ! 1)
$C = $C + 1
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
END_IF
IF($A>$Blue)
LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M4)
END_IF
ELSE //èíà÷å
IF(PXL(1104,287) = 401020) //åñëè ïîëîñà êðàñíàÿ
$Blue = PXLCOUNT(1106,287,1331,287, 468366)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468109)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468110)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468111)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468112)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468113)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468369)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468368)
IF($C ! 1)
$C = $C + 1
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
END_IF
IF($A>$Blue)
LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M2)
ELSE
LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M4)
END_IF
ELSE
GOTO(M5)
END_IF
END_IF //êîíåö âåòêè êðàñíûé/ñèíèé
ELSE
GOTO(M5)
END_IF //êîíåö ïðîâåðêè íà êðàñíûé/ñèíèé
M4:
GETSCREEN
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020))
IF(PXL(1104,287) = 7886082)
$Blue = PXLCOUNT(1106,287,1331,287, 10446592)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
IF($A>$Blue)
LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M2)
ELSE
LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M4)
END_IF
ELSE
IF(PXL(1104,287) = 401020) //åñëè ïîëîñà êðàñíàÿ
$Blue = PXLCOUNT(1106,287,1331,287, 468366)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468109)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468110)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468111)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468112)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468113)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468369)
$Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468368)
IF($A>$Blue)
LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F3)
WAITMS(2000)
GOTO(M2)
ELSE
LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
KEYPRESS(#F2)
WAITMS(2000)
GOTO(M4)
END_IF
ELSE
GOTO(M5)
END_IF
END_IF
ELSE
GOTO(M5) // åñëè ïîëîñêè íåò âîîáùå
END_IF
ELSE
WAIT(1)
GOTO(M5)
END_IF
ELSE
IF(PXL(685, 195) = 12377059)
WAITMS(10)
KEYSTRING(/target)
KEYPRESS(32)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING(jkjnfz)
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING(ecfkrf)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
KEYSTRING(/target)
KEYPRESS(32)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYDOWN(#SHIFT)
KEYPRESS(#p)
KEYUP(#SHIFT)
KEYSTRING(jkjnfz)
KEYDOWN(#SHIFT)
KEYPRESS(#h)
KEYUP(#SHIFT)
KEYSTRING(ecfkrf)
KEYDOWN(#CTRL)
KEYPRESS(#SHIFT)
KEYPRESS(#SHIFT)
KEYUP(#CTRL)
KEYPRESS(#ENTER) //íàáðàòü â ÷àò /target Çîëîòàÿ Ðóñàëêà 2 ðàçà, ó÷èòûâàÿ ñìåíó ÿçûêîâ. (âî âðåìÿ ðàáîòû ìàêðîñà äîëæåí áûòü âêëþ÷¸ííûìè ðóññêèé ÿçûê)
WAITMS(500)
GETSCREEN
IF(PXL(1347,470) = 13748415)
MOVE(1250,602)
WAITMS(500)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#F1)
WAIT(2)
GOTO(M5)
ELSE
KEYPRESS(#F1)
WAIT(2)
GOTO(M5)
END_IF
ELSE
KEYPRESS(#F1)
WAIT(2)
GOTO(M5)
END_IF
KEYPRESS(#F1)
WAIT(2)
GOTO(M5)
END_IF
-
12 строка, нет завершающей скобки
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020)) //проверка на появление полоски
Строки всегда заключай в кавычки
неправильно
KEYSTRING(/target)
правильно
KEYSTRING("/target")
-
Эх давно меня не было)) Продолжаю работу, т.к. вернули интернет. Пока сидел без него придумал пару вещей к уже существующему скрипту:
Если долго держит удочку и не ловится рыба скрипт запускает аудио (рыбы нет смени место), и снимает наживку.
Определяет день или ночь сейчас и одевает нужную наживку
После вылова русалки, делает шаг вперёд, чтобы русалки не стакались (иначе в цель их не взять)
#ps2_keyboard
#ps2_mouse
M5:
GETSCREEN
IF((PXL(69, 454) = 7969453)&(PXL(62, 469) = 7969453)&(PXL(97, 484) = 7969712))
SOUND("play.wav")
WAIT(1)
GOTO(M7)
ELSE
END_IF
P1:
IF(($N=0)&($D=0))
KEYPRESS(#F9)
WAITMS(100)
GETSCREEN
IF(PXL(204, 484) = 7903919)
$D=1
KEYPRESS(#F6)
ELSE
IF(PXL(199, 487) = 7969712)
$N=1
KEYPRESS(#F7)
ELSE
GOTO(P1)
END_IF
END_IF
ELSE
IF($D=1)
KEYPRESS(#F9)
WAITMS(100)
GETSCREEN
IF(PXL(204, 484) = 7903919)
GOTO(P2)
ELSE
$D=0
KEYPRESS(#F6)
WAITMS(100)
GOTO(P1)
END_IF
ELSE
IF($N=1)
KEYPRESS(#F9)
WAITMS(100)
GETSCREEN
IF(PXL(199, 487) = 7969712)
GOTO(P2)
ELSE
$N=0
KEYPRESS(#F7)
WAITMS(100)
GOTO(P1)
END_IF
ELSE
GOTO(P1)
END_IF
END_IF
END_IF
P2:
KEYPRESS(#F1)
$C=0
$A=0
$B=0
GETSCREEN
IF(PXL(1197,43) = 14406087) //проверка на появление окна рыбалки
M1:
GETSCREEN
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020) //проверка на появление полоски
M2:
GETSCREEN
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020))
IF(PXL(1104,287) = 7886082) // Если полоса синяя
$B = PXLCOUNT(1106,287,1331,287, 10446592)
$B = $B+PXLCOUNT(1106,287,1331,287, 10118913)
$B = $B+PXLCOUNT(1106,287,1331,287, 10249473)
$B = $B+PXLCOUNT(1106,287,1331,287, 10315265)
$B = $B+PXLCOUNT(1106,287,1331,287, 10315264)
$B = $B+PXLCOUNT(1106,287,1331,287, 10381056)
$B = $B+PXLCOUNT(1106,287,1331,287, 10446848)
$B = $B+PXLCOUNT(1106,287,1331,287, 10447104)
$B = $B+PXLCOUNT(1106,287,1331,287, 10447360)
$B = $B+PXLCOUNT(1106,287,1331,287, 10118401)
IF($C ! 1)
$C = $C + 1
$A = $B
KEYPRESS(#F2)
WAITMS(1)
GOTO(M2)
ELSE
END_IF
IF($A>$B)
$A = $B
KEYPRESS(#F2)
WAITMS(1)
GOTO(M2)
ELSE
$A = $B
KEYPRESS(#F3)
WAITMS(1)
GOTO(M4)
END_IF
ELSE //иначе
IF(PXL(1104,287) = 401020) //если полоса красная
$B = PXLCOUNT(1106,287,1331,287, 468366)
$B = $B+PXLCOUNT(1106,287,1331,287, 468109)
$B = $B+PXLCOUNT(1106,287,1331,287, 468110)
$B = $B+PXLCOUNT(1106,287,1331,287, 468111)
$B = $B+PXLCOUNT(1106,287,1331,287, 468112)
$B = $B+PXLCOUNT(1106,287,1331,287, 468113)
$B = $B+PXLCOUNT(1106,287,1331,287, 468369)
$B = $B+PXLCOUNT(1106,287,1331,287, 468368)
IF($C ! 1)
$C = $C + 1
$A = $B
KEYPRESS(#F2)
WAITMS(1)
GOTO(M2)
ELSE
END_IF
IF($A>$B)
$A = $B
KEYPRESS(#F2)
WAITMS(1)
GOTO(M2)
ELSE
$A = $B
KEYPRESS(#F3)
WAITMS(1)
GOTO(M4)
END_IF
ELSE
GOTO(M5)
END_IF
END_IF //конец ветки красный/синий
ELSE
GOTO(M5)
END_IF //(проверка начала полоски)конец проверки на красный/синий
M4:
GETSCREEN
IF((PXL(1104,287) = 7886082) | (PXL(1104,287) = 401020))
IF(PXL(1104,287) = 7886082)
$B = PXLCOUNT(1106,287,1331,287, 10446592)
$B = $B+PXLCOUNT(1106,287,1331,287, 10118913)
$B = $B+PXLCOUNT(1106,287,1331,287, 10249473)
$B = $B+PXLCOUNT(1106,287,1331,287, 10315265)
$B = $B+PXLCOUNT(1106,287,1331,287, 10315264)
$B = $B+PXLCOUNT(1106,287,1331,287, 10381056)
$B = $B+PXLCOUNT(1106,287,1331,287, 10446848)
$B = $B+PXLCOUNT(1106,287,1331,287, 10447104)
$B = $B+PXLCOUNT(1106,287,1331,287, 10447360)
$B = $B+PXLCOUNT(1106,287,1331,287, 10118401)
IF($A>$B)
$A = $B
KEYPRESS(#F3)
WAITMS(1)
GOTO(M2)
ELSE
$A = $B
KEYPRESS(#F2)
WAITMS(1)
GOTO(M4)
END_IF
ELSE
IF(PXL(1104,287) = 401020) //если полоса красная
$B = PXLCOUNT(1106,287,1331,287, 468366)
$B = $B+PXLCOUNT(1106,287,1331,287, 468109)
$B = $B+PXLCOUNT(1106,287,1331,287, 468110)
$B = $B+PXLCOUNT(1106,287,1331,287, 468111)
$B = $B+PXLCOUNT(1106,287,1331,287, 468112)
$B = $B+PXLCOUNT(1106,287,1331,287, 468113)
$B = $B+PXLCOUNT(1106,287,1331,287, 468369)
$B = $B+PXLCOUNT(1106,287,1331,287, 468368)
IF($A>$B)
$A = $B
KEYPRESS(#F3)
WAITMS(1)
GOTO(M2)
ELSE
$A = $B
KEYPRESS(#F2)
WAITMS(1)
GOTO(M4)
END_IF
ELSE
GOTO(M5)
END_IF
END_IF
ELSE
GOTO(M5) // если полоски нет вообще
END_IF
ELSE
WAIT(1)
GOTO(M5)
END_IF
ELSE
M6:
GETSCREEN
IF(PXL(1197,43) = 14406087)
WAITMS(100)
GOTO(M6)
ELSE
END_IF
GETSCREEN
IF(PXL(501, 227) = 4671303)
WAITMS(5000)
KEYPRESS(#F8) //макрос на взятие в цель русалки
WAITMS(2000)
GETSCREEN
IF(PXL(1047,300) = 13748415)
MOVE(910,451)
WAITMS(2000) //вот сюда нужно влепить клик мышкой, хотя я и отключал usb мышь - пс2 тачпад всё равно не нажимает, а так же только выполняет MOVE(x,y).
GETSCREEN
IF((PXL(32, 482) = 65535)|(PXL(1047,300) = 13748415)) //проверка получил ли я награду или оказалась ли русалка пустой
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#ESC)
WAITMS(10)
KEYPRESS(#UP)
WAIT(1)
GOTO(M5)
ELSE
END_IF
ELSE
WAIT(2)
GOTO(M5)
END_IF
ELSE
WAIT(2)
GOTO(M5)
END_IF
WAIT(2)
GOTO(M5)
END_IF
M7:
IF($D=1)
KEYPRESS(#F6)
ELSE
IF($N=1)
KEYPRESS(#F7)
ELSE
END_IF
END_IF
HALT
-
можно ли использовать переменные вместо координат вот так например:
PXL($X, $Y)
?
-
Везде где числа, можно использовать переменные. Кроме самих имён переменных, имён SUB и меток GOTO.
-
Мой код эволюционировал во в такой :)
Подскажите, может не недочёты, ошибки какие то допустил
#ps2_mouse
#ps2_keyboard
#logfile
KEYPRESS(#F1)
WAIT(1)
getscreen
SCANPICTURE ($var, 0, 0, 1365, 767, "3x3.bmp")//поиск заголовка рыбалки на экране
$y = arrpop($var)
$x = arrpop($var)
$X = int($x) + 1 // Координаты точки от которой
$Y = int($y) + 1 // ищется полоска HP рыбы
//print($x,":", $y) //log
$Xn = int($X)-93 //Координаты начала полоски(проверка наличия/цвета)
$Yn = int($Y)+244
$Xnp = int($X)-91
$Ynp = int($Yn)
$Xkp = int($X)+134
$Ykp = int($Yn)
sub(LONGBLUE, $LB) //функция считает длинну синей полоски
GETSCREEN
$LB = 0
$LB = PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10446592)
$LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10118913)
$LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10249473)
$LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10315265)
$LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10315264)
$LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10381056)
$LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10446848)
$LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10447104)
$LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10447360)
$LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10118401)
end_sub
sub(LONGRED, $LR) //анологично красной
GETSCREEN
$LR = 0
$LR = PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10446592)
$LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10118913)
$LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10249473)
$LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10315265)
$LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10315264)
$LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10381056)
$LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10446848)
$LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10447104)
$LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10447360)
$LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10118401)
end_sub
sub(randomtick)
IF($D > 0) //
$F = $B - $D //
IF($F > 0) //
$A = $A+$F // поправка на случайный тик
ELSE //
END_IF //
ELSE //
END_IF //
end_sub
//print("начало/конец ловли")
M5:
$A = 0
$B = 0
$C = 0
$D = 0
$F = 0
GETSCREEN
IF(PXL($X,$Y) = 14406087)
IF((PXL($X,$Y) = 14406087)&($T > 7)
Sound("4.wav")
HALT
else
end_if
M1:
GETSCREEN
IF((PXL($Xn,$Yn) = 7886082)|(PXL($Xn,$Yn) = 401020) //???????? ?? ????????? ???????
M2:
GETSCREEN
IF((PXL($Xn,$Yn) = 7886082)|(PXL($Xn,$Yn) = 401020))
IF(PXL($Xn,$Yn) = 7886082) // если полоса синяя
LONGBLUE($B)
randomtick()
IF($C ! 1)
inc($C, 1)
$A = $B
KEYPRESS(#F2)
LONGBLUE($D)
WAIT(1)
GOTO(M2)
ELSE
END_IF
IF($A>$B)
$A = $B
KEYPRESS(#F2)
LONGBLUE($D)
WAIT(1)
GOTO(M2)
ELSE
$A = $B
KEYPRESS(#F3)
LONGBLUE($D)
WAIT(1)
GOTO(M4)
END_IF
ELSE //иначе
IF(PXL($Xn,$Yn) = 401020) //если красная
LONGRED($B)
randomtick()
IF($C ! 1)
inc($C, 1)
$A = $B
KEYPRESS(#F2)
LONGRED($D)
WAIT(1)
GOTO(M2)
ELSE
END_IF
IF($A>$B)
$A = $B
KEYPRESS(#F2)
LONGRED($D)
WAIT(1)
GOTO(M2)
ELSE
$A = $B
KEYPRESS(#F3)
LONGRED($D)
WAIT(1)
GOTO(M4)
END_IF
ELSE
GOTO(M5)
END_IF
END_IF //конец ветки красный/синий
ELSE
GOTO(M5)
END_IF //(проверка начала полоски)конец проверки на красный/синий
M4:
GETSCREEN
IF((PXL($Xn,$Yn) = 7886082) | (PXL($Xn,$Yn) = 401020)) // красн./син.
IF(PXL($Xn,$Yn) = 7886082)// синяя
LONGBLUE($B)
randomtick()
IF($A>$B)
$A = $B
KEYPRESS(#F3)
LONGBLUE($D)
WAIT(1)
GOTO(M4)
ELSE
$A = $B
KEYPRESS(#F2)
LONGBLUE($D)
WAIT(1)
GOTO(M2)
END_IF
ELSE
IF(PXL($Xn,$Yn) = 401020) //красная
LONGRED($B)
randomtick()
IF($A>$B)
$A = $B
KEYPRESS(#F3)
LONGRED($D)
WAIT(1)
GOTO(M4)
ELSE
$A = $B
KEYPRESS(#F2)
LONGRED($D)
WAIT(1)
GOTO(M2)
END_IF
ELSE
GOTO(M5)
END_IF
END_IF
ELSE
GOTO(M5) // если нет полосы вообще
END_IF
ELSE
WAIT(1) // ожидание появления полоски
inc($T,1)
GOTO(M5)
END_IF
ELSE
M6: //
GETSCREEN //
IF(PXL($X,$Y) = 14406087) // ожидание, когда исчезнит окно рыбалки
WAITMS(100) // после вылова рыбы
GOTO(M6) //
ELSE //
END_IF //
getscreen
SCANPICTURE ($var1, 0, 0, 1365, 767, "713x201.bmp")
$Ry1 = arrpop($var1)
SCANPICTURE ($var1, 0, 0, 1365, 767, "646x202.bmp")
$Ry2 = arrpop($var1)
GETSCREEN
IF(($Rx1 = 201) & ($Rx2 = 202))//IF(PXL(501, 227) = 4671303) //проверка на русалку
sound("1.wav")
Keypress(#F8)
WAITMS(100)
getscreen
SCANPICTURE ($var1, 0, 0, 1365, 767, "нагр.bmp")
$Ry = arrpop($var1)
$Rx = arrpop($var1)
$RNx = int($Rx) - 112
$RNy = int($Ry) + 156
Waitms(100)
MOVE($RNx,$RNy)
DIALOGBOX("Внимание вы поймали русалку, заберите награду, отойдите от неё, станьте в положение в котором можно рыбачить и нажмите ОК",0,4)
ELSE
WAIT(2)
KEYPRESS(#F1)
GOTO(M5)
END_IF
WAIT(2)
KEYPRESS(#F1)
GOTO(M5)
END_IF
halt // for single run
-
Строки 66 73, не хватает завершающей скобки
-
Спасибо, но многого не понял к сожалению, попробуй так, сначала кусок моего кода, а потом его реализация в твоём варианте. Очень благодарен за замечания)
с колормодом плохо знаком, и не знаю как поведёт себя тот или иной цвет, не суть, просто переписал какие цвета на полоске и всего то)
Конструкция:
ИФ(условие)
действие
элсэ
энд_иф
Если нет ничего в элсе то его писать не обязательно, я так понял?)
Я не объявляю переменную, а обнуляю её, но не знаю верно ли я сделал))
Если что пишите указывайте мои ошибки, буду учиться)))